stackshift-agent 0.1.0__tar.gz → 0.1.1__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 (33) hide show
  1. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/PKG-INFO +1 -1
  2. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/pyproject.toml +1 -1
  3. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/inbox.py +5 -1
  4. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent.egg-info/PKG-INFO +1 -1
  5. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/tests/test_platform.py +4 -3
  6. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/README.md +0 -0
  7. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/setup.cfg +0 -0
  8. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/__init__.py +0 -0
  9. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/actions.py +0 -0
  10. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/adapters/__init__.py +0 -0
  11. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/adapters/claude.py +0 -0
  12. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/adapters/openai_agents.py +0 -0
  13. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/agent.py +0 -0
  14. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/agreements.py +0 -0
  15. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/api.py +0 -0
  16. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/config.py +0 -0
  17. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/egress.py +0 -0
  18. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/errors.py +0 -0
  19. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/http.py +0 -0
  20. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/models.py +0 -0
  21. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/platform.py +0 -0
  22. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/run.py +0 -0
  23. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/state.py +0 -0
  24. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/tokens.py +0 -0
  25. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent/verify.py +0 -0
  26. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent.egg-info/SOURCES.txt +0 -0
  27. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent.egg-info/dependency_links.txt +0 -0
  28. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent.egg-info/requires.txt +0 -0
  29. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/stackshift_agent.egg-info/top_level.txt +0 -0
  30. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/tests/test_actions.py +0 -0
  31. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/tests/test_adapters.py +0 -0
  32. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/tests/test_egress_models.py +0 -0
  33. {stackshift_agent-0.1.0 → stackshift_agent-0.1.1}/tests/test_events.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackshift-agent
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Run an agent on StackShift: events, governed actions, StackShift calls, state and model access.
5
5
  Author-email: StackShift <support@stackshift.cloud>
6
6
  Project-URL: Homepage, https://stackshift.cloud
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "stackshift-agent"
7
- version = "0.1.0"
7
+ version = "0.1.1"
8
8
  description = "Run an agent on StackShift: events, governed actions, StackShift calls, state and model access."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -18,8 +18,11 @@ class Inbox:
18
18
  raise StackShiftAgentError("This agent has no inbox. Add an inbox to the agent block in stackshift.yaml.", status=409, code="no_inbox")
19
19
  return inbox
20
20
 
21
+ async def _account(self) -> str:
22
+ return (await self._self())["agent"]["account_id"]
23
+
21
24
  async def info(self) -> Any:
22
- return await self._platform.inspect("mail.agent_inboxes.get", {"inbox_id": await self.id()})
25
+ return await self._platform.inspect("mail.agent_inboxes.get", {"inbox_id": await self.id()}, resource_id=await self._account())
23
26
 
24
27
  async def send(
25
28
  self,
@@ -41,6 +44,7 @@ class Inbox:
41
44
  "html": html,
42
45
  "reply_to_message_id": reply_to_message_id,
43
46
  }
47
+ options.setdefault("resource_id", await self._account())
44
48
  return await self._platform.call("mail.agent_inbox.send", {key: value for key, value in configuration.items() if value is not None}, **options)
45
49
 
46
50
  async def reply(self, message: dict[str, Any], text: str, **options: Any) -> dict[str, Any]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackshift-agent
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Run an agent on StackShift: events, governed actions, StackShift calls, state and model access.
5
5
  Author-email: StackShift <support@stackshift.cloud>
6
6
  Project-URL: Homepage, https://stackshift.cloud
@@ -84,7 +84,7 @@ class PlatformTest(AgentTestCase):
84
84
  async def test_the_inbox_sends_and_replies_through_the_registry_actions_using_the_agent_inbox_id(self):
85
85
  self.mcp(
86
86
  lambda name, arguments: reply({"id": "op_3", "state": "succeeded"}),
87
- lambda call: {"body": {"agent": {"id": "agt_1", "handle": "supplies", "name": "Supplies", "inbox_mailbox_id": "inbox_1"}, "actions": [], "platform": [], "models": []}} if call["path"] == "/api/v1/agents/self" else None,
87
+ lambda call: {"body": {"agent": {"id": "agt_1", "account_id": "acct_1", "handle": "supplies", "name": "Supplies", "inbox_mailbox_id": "inbox_1"}, "actions": [], "platform": [], "models": []}} if call["path"] == "/api/v1/agents/self" else None,
88
88
  )
89
89
 
90
90
  async def work():
@@ -93,7 +93,8 @@ class PlatformTest(AgentTestCase):
93
93
 
94
94
  await self.in_run(work)
95
95
  sends = [call["arguments"]["request"] for call in self.tool_calls()]
96
- self.assertEqual(sends[0], {"action": "mail.agent_inbox.send", "configuration": {"inbox_id": "inbox_1", "to": ["buyer@example.com"], "subject": "Quote", "text": "Here it is"}})
96
+ self.assertEqual(sends[0], {"action": "mail.agent_inbox.send", "configuration": {"inbox_id": "inbox_1", "to": ["buyer@example.com"], "subject": "Quote", "text": "Here it is"}, "resource_id": "acct_1"})
97
+ self.assertEqual(sends[1]["resource_id"], "acct_1")
97
98
  self.assertEqual(sends[1]["configuration"], {"inbox_id": "inbox_1", "to": ["ada@example.com"], "subject": "Re: Quote", "text": "Thanks", "reply_to_message_id": "m1"})
98
99
 
99
100
  async def test_an_agent_without_an_inbox_says_so(self):
@@ -115,7 +116,7 @@ class PlatformTest(AgentTestCase):
115
116
  async def test_agreements_use_the_agreements_registry_actions(self):
116
117
  self.mcp(
117
118
  lambda name, arguments: reply({"threads": []} if name == "inspect" else {"id": "op_4", "state": "succeeded"}),
118
- lambda call: {"body": {"agent": {"id": "agt_1", "handle": "supplies", "name": "Supplies", "inbox_mailbox_id": "inbox_1"}, "actions": [], "platform": [], "models": []}} if call["path"] == "/api/v1/agents/self" else None,
119
+ lambda call: {"body": {"agent": {"id": "agt_1", "account_id": "acct_1", "handle": "supplies", "name": "Supplies", "inbox_mailbox_id": "inbox_1"}, "actions": [], "platform": [], "models": []}} if call["path"] == "/api/v1/agents/self" else None,
119
120
  )
120
121
 
121
122
  async def work():