goose-py 0.11.20__tar.gz → 0.11.22__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 (34) hide show
  1. {goose_py-0.11.20 → goose_py-0.11.22}/PKG-INFO +2 -2
  2. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/agent.py +9 -9
  3. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/task.py +8 -3
  4. {goose_py-0.11.20 → goose_py-0.11.22}/pyproject.toml +2 -2
  5. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_agent.py +4 -3
  6. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_ask.py +4 -3
  7. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_refining.py +4 -3
  8. {goose_py-0.11.20 → goose_py-0.11.22}/uv.lock +5 -5
  9. {goose_py-0.11.20 → goose_py-0.11.22}/.envrc +0 -0
  10. {goose_py-0.11.20 → goose_py-0.11.22}/.github/workflows/publish.yml +0 -0
  11. {goose_py-0.11.20 → goose_py-0.11.22}/.gitignore +0 -0
  12. {goose_py-0.11.20 → goose_py-0.11.22}/.python-version +0 -0
  13. {goose_py-0.11.20 → goose_py-0.11.22}/.stubs/jsonpath_ng/__init__.pyi +0 -0
  14. {goose_py-0.11.20 → goose_py-0.11.22}/Makefile +0 -0
  15. {goose_py-0.11.20 → goose_py-0.11.22}/README.md +0 -0
  16. {goose_py-0.11.20 → goose_py-0.11.22}/goose/__init__.py +0 -0
  17. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/conversation.py +0 -0
  18. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/flow.py +0 -0
  19. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/result.py +0 -0
  20. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/state.py +0 -0
  21. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/store.py +0 -0
  22. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/types/__init__.py +0 -0
  23. {goose_py-0.11.20 → goose_py-0.11.22}/goose/_internal/types/telemetry.py +0 -0
  24. {goose_py-0.11.20 → goose_py-0.11.22}/goose/errors.py +0 -0
  25. {goose_py-0.11.20 → goose_py-0.11.22}/goose/flow.py +0 -0
  26. {goose_py-0.11.20 → goose_py-0.11.22}/goose/py.typed +0 -0
  27. {goose_py-0.11.20 → goose_py-0.11.22}/goose/runs.py +0 -0
  28. {goose_py-0.11.20 → goose_py-0.11.22}/goose/task.py +0 -0
  29. {goose_py-0.11.20 → goose_py-0.11.22}/tests/__init__.py +0 -0
  30. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_downstream_task.py +0 -0
  31. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_hashing.py +0 -0
  32. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_looping.py +0 -0
  33. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_regenerate.py +0 -0
  34. {goose_py-0.11.20 → goose_py-0.11.22}/tests/test_state.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: goose-py
3
- Version: 0.11.20
3
+ Version: 0.11.22
4
4
  Summary: A tool for AI workflows based on human-computer collaboration and structured output.
5
5
  Author-email: Nash Taylor <nash@chelle.ai>, Joshua Cook <joshua@chelle.ai>, Michael Sankur <michael@chelle.ai>
6
6
  Requires-Python: >=3.12
7
- Requires-Dist: aikernel==0.1.40
7
+ Requires-Dist: aikernel==0.1.42
8
8
  Requires-Dist: jsonpath-ng>=1.7.0
9
9
  Requires-Dist: pydantic>=2.8.2
10
10
  Description-Content-Type: text/markdown
@@ -5,10 +5,10 @@ from typing import Any, Literal, Protocol, overload
5
5
  from aikernel import (
6
6
  LLMAssistantMessage,
7
7
  LLMModelAlias,
8
+ LLMRouter,
8
9
  LLMSystemMessage,
9
10
  LLMToolMessage,
10
11
  LLMUserMessage,
11
- Router,
12
12
  llm_structured,
13
13
  llm_unstructured,
14
14
  )
@@ -43,7 +43,7 @@ class Agent:
43
43
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
44
44
  model: LLMModelAlias,
45
45
  task_name: str,
46
- router: Router,
46
+ router: LLMRouter[LLMModelAlias],
47
47
  response_model: type[R] = TextResult,
48
48
  ) -> R:
49
49
  start_time = datetime.now()
@@ -94,7 +94,7 @@ class Agent:
94
94
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
95
95
  model: LLMModelAlias,
96
96
  task_name: str,
97
- router: Router,
97
+ router: LLMRouter[LLMModelAlias],
98
98
  ) -> str:
99
99
  start_time = datetime.now()
100
100
  typed_messages: list[ExpectedMessage] = [*messages]
@@ -134,7 +134,7 @@ class Agent:
134
134
  *,
135
135
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
136
136
  model: LLMModelAlias,
137
- router: Router,
137
+ router: LLMRouter[LLMModelAlias],
138
138
  task_name: str,
139
139
  response_model: type[R],
140
140
  ) -> R:
@@ -186,7 +186,7 @@ class Agent:
186
186
  *,
187
187
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
188
188
  model: LLMModelAlias,
189
- router: Router,
189
+ router: LLMRouter[LLMModelAlias],
190
190
  task_name: str,
191
191
  mode: Literal["generate"],
192
192
  response_model: type[R],
@@ -198,7 +198,7 @@ class Agent:
198
198
  *,
199
199
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
200
200
  model: LLMModelAlias,
201
- router: Router,
201
+ router: LLMRouter[LLMModelAlias],
202
202
  task_name: str,
203
203
  mode: Literal["ask"],
204
204
  response_model: type[R] = TextResult,
@@ -210,7 +210,7 @@ class Agent:
210
210
  *,
211
211
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
212
212
  model: LLMModelAlias,
213
- router: Router,
213
+ router: LLMRouter[LLMModelAlias],
214
214
  task_name: str,
215
215
  response_model: type[R],
216
216
  mode: Literal["refine"],
@@ -222,7 +222,7 @@ class Agent:
222
222
  *,
223
223
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
224
224
  model: LLMModelAlias,
225
- router: Router,
225
+ router: LLMRouter[LLMModelAlias],
226
226
  task_name: str,
227
227
  response_model: type[R],
228
228
  ) -> R: ...
@@ -232,7 +232,7 @@ class Agent:
232
232
  *,
233
233
  messages: list[LLMUserMessage | LLMAssistantMessage | LLMSystemMessage],
234
234
  model: LLMModelAlias,
235
- router: Router,
235
+ router: LLMRouter[LLMModelAlias],
236
236
  task_name: str,
237
237
  response_model: type[R] = TextResult,
238
238
  mode: Literal["generate", "ask", "refine"] = "generate",
@@ -2,7 +2,7 @@ import hashlib
2
2
  from collections.abc import Awaitable, Callable
3
3
  from typing import Any, overload
4
4
 
5
- from aikernel import LLMModelAlias, LLMSystemMessage, LLMUserMessage, Router
5
+ from aikernel import LLMModelAlias, LLMRouter, LLMSystemMessage, LLMUserMessage
6
6
  from pydantic import BaseModel
7
7
 
8
8
  from goose._internal.agent import Agent
@@ -45,7 +45,12 @@ class Task[**P, R: Result]:
45
45
  return self.result_type.model_validate_json(state.raw_result)
46
46
 
47
47
  async def ask(
48
- self, *, user_message: LLMUserMessage, router: Router, context: LLMSystemMessage | None = None, index: int = 0
48
+ self,
49
+ *,
50
+ user_message: LLMUserMessage,
51
+ router: LLMRouter[LLMModelAlias],
52
+ context: LLMSystemMessage | None = None,
53
+ index: int = 0,
49
54
  ) -> str:
50
55
  flow_run = self.__get_current_flow_run()
51
56
  node_state = flow_run.get_state(task=self, index=index)
@@ -73,7 +78,7 @@ class Task[**P, R: Result]:
73
78
  self,
74
79
  *,
75
80
  user_message: LLMUserMessage,
76
- router: Router,
81
+ router: LLMRouter[LLMModelAlias],
77
82
  context: LLMSystemMessage | None = None,
78
83
  index: int = 0,
79
84
  ) -> R:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "goose-py"
3
- version = "0.11.20"
3
+ version = "0.11.22"
4
4
  description = "A tool for AI workflows based on human-computer collaboration and structured output."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -11,7 +11,7 @@ authors = [
11
11
  requires-python = ">=3.12"
12
12
  dependencies = [
13
13
  "jsonpath-ng>=1.7.0",
14
- "aikernel==0.1.40",
14
+ "aikernel==0.1.42",
15
15
  "pydantic>=2.8.2",
16
16
  ]
17
17
 
@@ -1,7 +1,7 @@
1
1
  from unittest.mock import Mock
2
2
 
3
3
  import pytest
4
- from aikernel import LLMMessagePart, LLMUserMessage, Router
4
+ from aikernel import LLMMessagePart, LLMModelAlias, LLMRouter, LLMUserMessage
5
5
  from pytest_mock import MockerFixture
6
6
 
7
7
  from goose import Agent, AgentResponse, FlowArguments, TextResult, flow, task
@@ -22,10 +22,11 @@ def mock_llm_unstructured(mocker: MockerFixture) -> Mock:
22
22
 
23
23
  @task
24
24
  async def use_agent(*, agent: Agent) -> TextResult:
25
- router = Router(
25
+ router = LLMRouter[LLMModelAlias](
26
26
  model_list=[
27
27
  {"model_name": "gemini-2.0-flash-lite", "litellm_params": {"model": "gemini/gemini-2.0-flash-lite"}}
28
- ]
28
+ ],
29
+ fallbacks=[],
29
30
  )
30
31
  return await agent(
31
32
  messages=[LLMUserMessage(parts=[LLMMessagePart(content="Hello")])],
@@ -1,15 +1,16 @@
1
1
  from unittest.mock import Mock
2
2
 
3
3
  import pytest
4
- from aikernel import LLMAssistantMessage, LLMMessagePart, LLMUserMessage, Router
4
+ from aikernel import LLMAssistantMessage, LLMMessagePart, LLMModelAlias, LLMRouter, LLMUserMessage
5
5
  from pytest_mock import MockerFixture
6
6
 
7
7
  from goose import Agent, FlowArguments, flow, task
8
8
  from goose._internal.result import TextResult
9
9
  from goose.errors import Honk
10
10
 
11
- ROUTER = Router(
12
- model_list=[{"model_name": "gemini-2.0-flash-lite", "litellm_params": {"model": "gemini/gemini-2.0-flash-lite"}}]
11
+ ROUTER = LLMRouter[LLMModelAlias](
12
+ model_list=[{"model_name": "gemini-2.0-flash-lite", "litellm_params": {"model": "gemini/gemini-2.0-flash-lite"}}],
13
+ fallbacks=[],
13
14
  )
14
15
 
15
16
 
@@ -3,15 +3,16 @@ import string
3
3
  from unittest.mock import Mock
4
4
 
5
5
  import pytest
6
- from aikernel import LLMMessagePart, LLMSystemMessage, LLMUserMessage, Router
6
+ from aikernel import LLMMessagePart, LLMModelAlias, LLMRouter, LLMSystemMessage, LLMUserMessage
7
7
  from pytest_mock import MockerFixture
8
8
 
9
9
  from goose import Agent, FlowArguments, Result, flow, task
10
10
  from goose._internal.result import FindReplaceResponse, Replacement
11
11
  from goose.errors import Honk
12
12
 
13
- ROUTER = Router(
14
- model_list=[{"model_name": "gemini-2.0-flash-lite", "litellm_params": {"model": "gemini/gemini-2.0-flash-lite"}}]
13
+ ROUTER = LLMRouter[LLMModelAlias](
14
+ model_list=[{"model_name": "gemini-2.0-flash-lite", "litellm_params": {"model": "gemini/gemini-2.0-flash-lite"}}],
15
+ fallbacks=[],
15
16
  )
16
17
 
17
18
 
@@ -3,15 +3,15 @@ requires-python = ">=3.12"
3
3
 
4
4
  [[package]]
5
5
  name = "aikernel"
6
- version = "0.1.40"
6
+ version = "0.1.42"
7
7
  source = { registry = "https://pypi.org/simple" }
8
8
  dependencies = [
9
9
  { name = "litellm" },
10
10
  { name = "pydantic" },
11
11
  ]
12
- sdist = { url = "https://files.pythonhosted.org/packages/e3/6f/6809d4fc0245898cd9cb1282e576e193f1788a379766ac1ac9c98f21cc19/aikernel-0.1.40.tar.gz", hash = "sha256:1c4cd8e1ef943e164b7ed9e9fa99151d31739024c506c68229e7054fb5447976", size = 72544 }
12
+ sdist = { url = "https://files.pythonhosted.org/packages/b5/43/451591e3835257c29e90db4c9cb22cd4c4566d63e1c1ab20652af612686d/aikernel-0.1.42.tar.gz", hash = "sha256:7fb29a14f32119a533502bb2925112c43709a00f2753b3d07b4c7b2c7cb153f6", size = 72593 }
13
13
  wheels = [
14
- { url = "https://files.pythonhosted.org/packages/73/37/329c6dc05d4b17e7fda36f98f6ef59d11c9b8718fe1c1997c8e267eacbf4/aikernel-0.1.40-py3-none-any.whl", hash = "sha256:7d1e8a9901932b1b42eca0e298f1024666f6ce628fa6a48bb783281d7979ed1f", size = 10502 },
14
+ { url = "https://files.pythonhosted.org/packages/0d/69/677ce38aeb965cda409c8f1efecd85f17fc648dba02f7441034a9bba8c1f/aikernel-0.1.42-py3-none-any.whl", hash = "sha256:b22ee9726e1e2688ef05bf7433fed0f671687d63710fbb507c81719efdbff309", size = 10570 },
15
15
  ]
16
16
 
17
17
  [[package]]
@@ -345,7 +345,7 @@ wheels = [
345
345
 
346
346
  [[package]]
347
347
  name = "goose-py"
348
- version = "0.11.20"
348
+ version = "0.11.22"
349
349
  source = { editable = "." }
350
350
  dependencies = [
351
351
  { name = "aikernel" },
@@ -365,7 +365,7 @@ dev = [
365
365
 
366
366
  [package.metadata]
367
367
  requires-dist = [
368
- { name = "aikernel", specifier = "==0.1.40" },
368
+ { name = "aikernel", specifier = "==0.1.42" },
369
369
  { name = "jsonpath-ng", specifier = ">=1.7.0" },
370
370
  { name = "pydantic", specifier = ">=2.8.2" },
371
371
  ]
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