cf-agents 0.1.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.
Files changed (113) hide show
  1. cf_agents-0.1.0/PKG-INFO +24 -0
  2. cf_agents-0.1.0/README.md +14 -0
  3. cf_agents-0.1.0/pyproject.toml +79 -0
  4. cf_agents-0.1.0/pyproject.toml.orig +58 -0
  5. cf_agents-0.1.0/src/agents/__init__.py +175 -0
  6. cf_agents-0.1.0/src/agents/_ffi.py +516 -0
  7. cf_agents-0.1.0/src/agents/agent/__init__.py +31 -0
  8. cf_agents-0.1.0/src/agents/agent/agent.py +1201 -0
  9. cf_agents-0.1.0/src/agents/agent/current.py +34 -0
  10. cf_agents-0.1.0/src/agents/agent/errors.py +12 -0
  11. cf_agents-0.1.0/src/agents/agent/routing.py +343 -0
  12. cf_agents-0.1.0/src/agents/agent/types.py +139 -0
  13. cf_agents-0.1.0/src/agents/chat/__init__.py +73 -0
  14. cf_agents-0.1.0/src/agents/chat/_json.py +16 -0
  15. cf_agents-0.1.0/src/agents/chat/accumulator.py +254 -0
  16. cf_agents-0.1.0/src/agents/chat/agent.py +1565 -0
  17. cf_agents-0.1.0/src/agents/chat/builder.py +436 -0
  18. cf_agents-0.1.0/src/agents/chat/chunks.py +369 -0
  19. cf_agents-0.1.0/src/agents/chat/codec.py +241 -0
  20. cf_agents-0.1.0/src/agents/chat/concurrency.py +148 -0
  21. cf_agents-0.1.0/src/agents/chat/errors.py +17 -0
  22. cf_agents-0.1.0/src/agents/chat/handshake.py +265 -0
  23. cf_agents-0.1.0/src/agents/chat/messages.py +312 -0
  24. cf_agents-0.1.0/src/agents/chat/persistence.py +56 -0
  25. cf_agents-0.1.0/src/agents/chat/protocol.py +248 -0
  26. cf_agents-0.1.0/src/agents/chat/reconciler.py +287 -0
  27. cf_agents-0.1.0/src/agents/chat/repair.py +128 -0
  28. cf_agents-0.1.0/src/agents/chat/resumable_stream.py +653 -0
  29. cf_agents-0.1.0/src/agents/chat/terminal.py +51 -0
  30. cf_agents-0.1.0/src/agents/chat/tool_state.py +238 -0
  31. cf_agents-0.1.0/src/agents/chat/turn_queue.py +118 -0
  32. cf_agents-0.1.0/src/agents/chat/types.py +112 -0
  33. cf_agents-0.1.0/src/agents/core/__init__.py +24 -0
  34. cf_agents-0.1.0/src/agents/core/encoding.py +56 -0
  35. cf_agents-0.1.0/src/agents/core/errors.py +31 -0
  36. cf_agents-0.1.0/src/agents/core/events.py +95 -0
  37. cf_agents-0.1.0/src/agents/core/methods.py +81 -0
  38. cf_agents-0.1.0/src/agents/core/naming.py +21 -0
  39. cf_agents-0.1.0/src/agents/core/platform_errors.py +110 -0
  40. cf_agents-0.1.0/src/agents/core/records.py +20 -0
  41. cf_agents-0.1.0/src/agents/core/retry.py +143 -0
  42. cf_agents-0.1.0/src/agents/core/sql.py +100 -0
  43. cf_agents-0.1.0/src/agents/core/timing.py +74 -0
  44. cf_agents-0.1.0/src/agents/core/types.py +50 -0
  45. cf_agents-0.1.0/src/agents/dynamic_agents/__init__.py +18 -0
  46. cf_agents-0.1.0/src/agents/dynamic_agents/api.py +77 -0
  47. cf_agents-0.1.0/src/agents/dynamic_agents/connections.py +130 -0
  48. cf_agents-0.1.0/src/agents/dynamic_agents/dynamic_agents.py +997 -0
  49. cf_agents-0.1.0/src/agents/dynamic_agents/errors.py +12 -0
  50. cf_agents-0.1.0/src/agents/dynamic_agents/paths.py +258 -0
  51. cf_agents-0.1.0/src/agents/dynamic_agents/registry.py +104 -0
  52. cf_agents-0.1.0/src/agents/dynamic_agents/stubs.py +115 -0
  53. cf_agents-0.1.0/src/agents/dynamic_agents/types.py +131 -0
  54. cf_agents-0.1.0/src/agents/fibers/__init__.py +34 -0
  55. cf_agents-0.1.0/src/agents/fibers/errors.py +25 -0
  56. cf_agents-0.1.0/src/agents/fibers/fibers.py +898 -0
  57. cf_agents-0.1.0/src/agents/fibers/keep_alive.py +197 -0
  58. cf_agents-0.1.0/src/agents/fibers/store.py +352 -0
  59. cf_agents-0.1.0/src/agents/fibers/types.py +218 -0
  60. cf_agents-0.1.0/src/agents/lifecycle/__init__.py +34 -0
  61. cf_agents-0.1.0/src/agents/lifecycle/capability.py +132 -0
  62. cf_agents-0.1.0/src/agents/lifecycle/capability_runner.py +149 -0
  63. cf_agents-0.1.0/src/agents/lifecycle/errors.py +28 -0
  64. cf_agents-0.1.0/src/agents/lifecycle/host_context.py +65 -0
  65. cf_agents-0.1.0/src/agents/lifecycle/job_driver.py +475 -0
  66. cf_agents-0.1.0/src/agents/lifecycle/job_queue.py +497 -0
  67. cf_agents-0.1.0/src/agents/lifecycle/lifecycle.py +596 -0
  68. cf_agents-0.1.0/src/agents/lifecycle/services.py +144 -0
  69. cf_agents-0.1.0/src/agents/lifecycle/types.py +290 -0
  70. cf_agents-0.1.0/src/agents/observability/__init__.py +6 -0
  71. cf_agents-0.1.0/src/agents/observability/observability.py +88 -0
  72. cf_agents-0.1.0/src/agents/observability/types.py +40 -0
  73. cf_agents-0.1.0/src/agents/py.typed +0 -0
  74. cf_agents-0.1.0/src/agents/queue/__init__.py +6 -0
  75. cf_agents-0.1.0/src/agents/queue/queue.py +561 -0
  76. cf_agents-0.1.0/src/agents/queue/types.py +121 -0
  77. cf_agents-0.1.0/src/agents/schedules/__init__.py +7 -0
  78. cf_agents-0.1.0/src/agents/schedules/cron.py +270 -0
  79. cf_agents-0.1.0/src/agents/schedules/errors.py +13 -0
  80. cf_agents-0.1.0/src/agents/schedules/scheduler.py +754 -0
  81. cf_agents-0.1.0/src/agents/schedules/timing.py +96 -0
  82. cf_agents-0.1.0/src/agents/schedules/types.py +171 -0
  83. cf_agents-0.1.0/src/agents/sessions/__init__.py +32 -0
  84. cf_agents-0.1.0/src/agents/sessions/chunking.py +31 -0
  85. cf_agents-0.1.0/src/agents/sessions/sanitize.py +66 -0
  86. cf_agents-0.1.0/src/agents/sessions/sessions.py +552 -0
  87. cf_agents-0.1.0/src/agents/sessions/store.py +331 -0
  88. cf_agents-0.1.0/src/agents/sessions/tokens.py +113 -0
  89. cf_agents-0.1.0/src/agents/sessions/types.py +119 -0
  90. cf_agents-0.1.0/src/agents/state/__init__.py +6 -0
  91. cf_agents-0.1.0/src/agents/state/state.py +147 -0
  92. cf_agents-0.1.0/src/agents/state/types.py +18 -0
  93. cf_agents-0.1.0/src/agents/streams/__init__.py +17 -0
  94. cf_agents-0.1.0/src/agents/streams/errors.py +38 -0
  95. cf_agents-0.1.0/src/agents/streams/store.py +275 -0
  96. cf_agents-0.1.0/src/agents/streams/streams.py +561 -0
  97. cf_agents-0.1.0/src/agents/streams/types.py +93 -0
  98. cf_agents-0.1.0/src/agents/tasks/__init__.py +54 -0
  99. cf_agents-0.1.0/src/agents/tasks/decorator.py +132 -0
  100. cf_agents-0.1.0/src/agents/tasks/engine.py +265 -0
  101. cf_agents-0.1.0/src/agents/tasks/errors.py +183 -0
  102. cf_agents-0.1.0/src/agents/tasks/registry.py +26 -0
  103. cf_agents-0.1.0/src/agents/tasks/replay.py +366 -0
  104. cf_agents-0.1.0/src/agents/tasks/serialization.py +50 -0
  105. cf_agents-0.1.0/src/agents/tasks/store.py +223 -0
  106. cf_agents-0.1.0/src/agents/tasks/tasks.py +1116 -0
  107. cf_agents-0.1.0/src/agents/tasks/types.py +354 -0
  108. cf_agents-0.1.0/src/agents/websockets/__init__.py +19 -0
  109. cf_agents-0.1.0/src/agents/websockets/connection.py +187 -0
  110. cf_agents-0.1.0/src/agents/websockets/errors.py +31 -0
  111. cf_agents-0.1.0/src/agents/websockets/rpc.py +286 -0
  112. cf_agents-0.1.0/src/agents/websockets/types.py +123 -0
  113. cf_agents-0.1.0/src/agents/websockets/websockets.py +513 -0
@@ -0,0 +1,24 @@
1
+ Metadata-Version: 2.3
2
+ Name: cf-agents
3
+ Version: 0.1.0
4
+ Summary: Cloudflare Agents for Python Workers
5
+ Author: Viswa Marepalli
6
+ Author-email: Viswa Marepalli <reachvishm@gmail.com>
7
+ Requires-Dist: typing-extensions>=4.12
8
+ Requires-Python: >=3.12
9
+ Description-Content-Type: text/markdown
10
+
11
+ <h1 align="center">
12
+ <sub>
13
+ <img src="https://raw.githubusercontent.com/justanotherbyte/agents-py/refs/heads/main/.github/agents.svg" height="36">
14
+ </sub>
15
+ &nbsp;
16
+ agents-py
17
+ </h1>
18
+ <p align="center">
19
+ <sup>
20
+ Cloudflare Agents for Python Workers
21
+ </sup>
22
+ </p>
23
+
24
+
@@ -0,0 +1,14 @@
1
+ <h1 align="center">
2
+ <sub>
3
+ <img src="https://raw.githubusercontent.com/justanotherbyte/agents-py/refs/heads/main/.github/agents.svg" height="36">
4
+ </sub>
5
+ &nbsp;
6
+ agents-py
7
+ </h1>
8
+ <p align="center">
9
+ <sup>
10
+ Cloudflare Agents for Python Workers
11
+ </sup>
12
+ </p>
13
+
14
+
@@ -0,0 +1,79 @@
1
+ [project]
2
+ name = "cf-agents"
3
+ version = "0.1.0"
4
+ description = "Cloudflare Agents for Python Workers"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ dependencies = ["typing-extensions>=4.12"]
8
+
9
+ [[project.authors]]
10
+ name = "Viswa Marepalli"
11
+ email = "reachvishm@gmail.com"
12
+
13
+ [build-system]
14
+ requires = ["uv_build>=0.12.19,<0.13.0"]
15
+ build-backend = "uv_build"
16
+
17
+ [tool.uv.build-backend]
18
+ module-name = "agents"
19
+
20
+ [tool.ruff]
21
+ line-length = 88
22
+ target-version = "py312"
23
+ extend-exclude = [
24
+ "verify",
25
+ ".design",
26
+ ]
27
+
28
+ [tool.ruff.lint]
29
+ select = [
30
+ "E",
31
+ "W",
32
+ "F",
33
+ "I",
34
+ "N",
35
+ "UP",
36
+ "B",
37
+ "SIM",
38
+ "C4",
39
+ "PIE",
40
+ "RUF",
41
+ "ANN",
42
+ "D",
43
+ ]
44
+ ignore = ["ANN401"]
45
+
46
+ [tool.ruff.lint.pydocstyle]
47
+ convention = "numpy"
48
+
49
+ [tool.ruff.lint.per-file-ignores]
50
+ "tests/**" = [
51
+ "D",
52
+ "ANN",
53
+ ]
54
+ "src/agents/__init__.py" = [
55
+ "F403",
56
+ "F405",
57
+ ]
58
+ "src/agents/chat/{chunks,messages}.py" = ["RUF009"]
59
+
60
+ [tool.pytest.ini_options]
61
+ testpaths = ["tests"]
62
+
63
+ [tool.ty.environment]
64
+ python-version = "3.12"
65
+
66
+ [tool.ty.analysis]
67
+ allowed-unresolved-imports = [
68
+ "js",
69
+ "pyodide",
70
+ "pyodide.**",
71
+ ]
72
+
73
+ [dependency-groups]
74
+ dev = [
75
+ "pytest",
76
+ "ruff",
77
+ "ty",
78
+ "workers-runtime-sdk",
79
+ ]
@@ -0,0 +1,58 @@
1
+ [project]
2
+ name = "cf-agents"
3
+ version = "0.1.0"
4
+ description = "Cloudflare Agents for Python Workers"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "Viswa Marepalli", email = "reachvishm@gmail.com" }
8
+ ]
9
+ requires-python = ">=3.12"
10
+ dependencies = ["typing-extensions>=4.12"]
11
+
12
+ [build-system]
13
+ requires = ["uv_build>=0.12.19,<0.13.0"]
14
+ build-backend = "uv_build"
15
+
16
+ [tool.uv.build-backend]
17
+ module-name = "agents"
18
+
19
+ [dependency-groups]
20
+ dev = ["pytest", "ruff", "ty", "workers-runtime-sdk"]
21
+
22
+ [tool.ruff]
23
+ line-length = 88
24
+ target-version = "py312"
25
+ extend-exclude = ["verify", ".design"] # the verification Worker and design docs aren't SDK code
26
+
27
+ [tool.ruff.lint]
28
+ select = [
29
+ "E", "W", "F", # pycodestyle, pyflakes
30
+ "I", # import sorting
31
+ "N", # PEP 8 naming
32
+ "UP", # modern syntax for the target version
33
+ "B", # bugbear
34
+ "SIM", "C4", "PIE", # simplifications
35
+ "RUF", # ruff-specific
36
+ "ANN", # annotations everywhere
37
+ "D", # docstrings
38
+ ]
39
+ ignore = ["ANN401"] # Any is allowed where decided (code_semantics.md §3)
40
+
41
+ [tool.ruff.lint.pydocstyle]
42
+ convention = "numpy"
43
+
44
+ [tool.ruff.lint.per-file-ignores]
45
+ "tests/**" = ["D", "ANN"]
46
+ # Wildcard re-exports with a static __all__ (checked by tests/test_public_api.py).
47
+ "src/agents/__init__.py" = ["F403", "F405"]
48
+ # wire() returns a dataclasses.field() (utilities.md §5), which RUF009 can't see.
49
+ "src/agents/chat/{chunks,messages}.py" = ["RUF009"]
50
+
51
+ [tool.pytest.ini_options]
52
+ testpaths = ["tests"]
53
+
54
+ [tool.ty.environment]
55
+ python-version = "3.12"
56
+
57
+ [tool.ty.analysis]
58
+ allowed-unresolved-imports = ["js", "pyodide", "pyodide.**"]
@@ -0,0 +1,175 @@
1
+ """Python port of the Cloudflare Agents SDK.
2
+
3
+ Re-exports each subpackage's public names (its ``__all__``). Keep ``__all__``
4
+ below in step with the subpackages' (``tests/test_public_api.py`` checks it).
5
+ """
6
+
7
+ from .agent import *
8
+ from .chat import *
9
+ from .core import *
10
+ from .dynamic_agents import *
11
+ from .fibers import *
12
+ from .lifecycle import *
13
+ from .observability import *
14
+ from .queue import *
15
+ from .schedules import *
16
+ from .sessions import *
17
+ from .state import *
18
+ from .streams import *
19
+ from .tasks import *
20
+ from .websockets import *
21
+
22
+ __all__ = (
23
+ "DEFAULT_MAX_CHUNK_BYTES",
24
+ "AIChatAgent",
25
+ "AIChatAgentOptions",
26
+ "Agent",
27
+ "AgentOptions",
28
+ "AgentPathStep",
29
+ "AgentRoute",
30
+ "AgentStub",
31
+ "AgentsException",
32
+ "AnyToolPart",
33
+ "AppendEvent",
34
+ "AppendResult",
35
+ "CallableMetadata",
36
+ "CancelledRun",
37
+ "ChatMessageOptions",
38
+ "ChatResponseResult",
39
+ "ChatStreamError",
40
+ "ClearEvent",
41
+ "ClientToolSchema",
42
+ "CompletedRun",
43
+ "Connection",
44
+ "ConnectionContext",
45
+ "ConnectionStateTooLargeError",
46
+ "CurrentAgent",
47
+ "DataPart",
48
+ "Debounce",
49
+ "DeleteEvent",
50
+ "Disposable",
51
+ "DuplicateConnectionIdError",
52
+ "DuplicateTaskStepError",
53
+ "Duration",
54
+ "DynamicAgents",
55
+ "FailedRun",
56
+ "FiberAborted",
57
+ "FiberCompleted",
58
+ "FiberConflictError",
59
+ "FiberContext",
60
+ "FiberErrored",
61
+ "FiberInspection",
62
+ "FiberInterrupted",
63
+ "FiberNotFoundError",
64
+ "FiberRecoveryContext",
65
+ "FiberRecoveryResult",
66
+ "FiberStatus",
67
+ "Fibers",
68
+ "FilePart",
69
+ "InvalidCronExpressionError",
70
+ "JSONValue",
71
+ "JobContext",
72
+ "JobOutcome",
73
+ "KeepAlive",
74
+ "Lifecycle",
75
+ "LifecycleCapability",
76
+ "LifecycleEvent",
77
+ "LifecycleJob",
78
+ "LifecycleJobs",
79
+ "LifecycleRoutes",
80
+ "LifecycleServices",
81
+ "LifecycleStatus",
82
+ "LoggingObservability",
83
+ "MemoryLimitContext",
84
+ "MessageConcurrency",
85
+ "MissingTaskDefinitionError",
86
+ "NonRetryableError",
87
+ "Observability",
88
+ "ObservabilityEvent",
89
+ "PendingRun",
90
+ "Queue",
91
+ "QueueItem",
92
+ "ReadonlyConnectionError",
93
+ "ReasoningPart",
94
+ "RecentHistoryResult",
95
+ "Reschedule",
96
+ "RetryOptions",
97
+ "RouteAddress",
98
+ "RouteContext",
99
+ "RoutingRetryEvent",
100
+ "RoutingRetryOptions",
101
+ "RunningRun",
102
+ "SaveMessagesResult",
103
+ "Schedule",
104
+ "ScheduleType",
105
+ "Scheduler",
106
+ "Session",
107
+ "SessionChangeEvent",
108
+ "SessionChangeListener",
109
+ "SessionMessage",
110
+ "SessionRowStat",
111
+ "Sessions",
112
+ "Source",
113
+ "SourceDocumentPart",
114
+ "SourceUrlPart",
115
+ "Sql",
116
+ "SqlError",
117
+ "SqlValue",
118
+ "StartFiberResult",
119
+ "State",
120
+ "StateSource",
121
+ "StepInterruption",
122
+ "StepRetries",
123
+ "StepStartPart",
124
+ "StepTimeoutError",
125
+ "StreamChunk",
126
+ "StreamClosedError",
127
+ "StreamNotFoundError",
128
+ "StreamSerializationError",
129
+ "StreamState",
130
+ "StreamStatus",
131
+ "StreamWriter",
132
+ "StreamingResponse",
133
+ "Streams",
134
+ "SubAgentAbortedError",
135
+ "SubAgentInfo",
136
+ "TaskError",
137
+ "TaskHandle",
138
+ "TaskReceipt",
139
+ "TaskReplayDivergedError",
140
+ "TaskRun",
141
+ "TaskRunState",
142
+ "TaskSerializationError",
143
+ "TaskStep",
144
+ "TaskStepAttempt",
145
+ "Tasks",
146
+ "TextPart",
147
+ "ToolApproval",
148
+ "ToolApprovalRequestedPart",
149
+ "ToolApprovalRespondedPart",
150
+ "ToolInputAvailablePart",
151
+ "ToolInputStreamingPart",
152
+ "ToolOutputAvailablePart",
153
+ "ToolOutputDeniedPart",
154
+ "ToolOutputErrorPart",
155
+ "ToolPart",
156
+ "ToolState",
157
+ "UIMessage",
158
+ "UIMessagePart",
159
+ "UnknownPart",
160
+ "UpdateEvent",
161
+ "WaitingRun",
162
+ "WebSocketHandlers",
163
+ "WebSockets",
164
+ "build_agent_path",
165
+ "build_agent_url",
166
+ "callable",
167
+ "get_agent_by_name",
168
+ "get_current_agent",
169
+ "get_sub_agent_by_name",
170
+ "retry",
171
+ "route_agent_request",
172
+ "route_sub_agent_request",
173
+ "subscribe",
174
+ "task",
175
+ )