devops-bot-sdk 1.4.78__tar.gz → 1.4.79__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 (38) hide show
  1. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/PKG-INFO +1 -1
  2. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
  3. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/pyproject.toml +1 -1
  4. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/__init__.py +2 -2
  5. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/client.py +1 -1
  6. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/ipc/handlers.py +32 -1
  7. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/README.md +0 -0
  8. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/devops_bot_sdk.egg-info/SOURCES.txt +0 -0
  9. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
  10. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
  11. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/devops_bot_sdk.egg-info/requires.txt +0 -0
  12. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/devops_bot_sdk.egg-info/top_level.txt +0 -0
  13. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/collectors/__init__.py +0 -0
  14. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/collectors/files.py +0 -0
  15. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/collectors/process.py +0 -0
  16. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/collectors/screenshot.py +0 -0
  17. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/config.py +0 -0
  18. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/crucial.py +0 -0
  19. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/exceptions.py +0 -0
  20. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/git_ops.py +0 -0
  21. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/graphify.py +0 -0
  22. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/hooks/__init__.py +0 -0
  23. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/hooks/crucial_guard.py +0 -0
  24. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/ipc/__init__.py +0 -0
  25. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/ipc/electron_bridge.py +0 -0
  26. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/local_exec.py +0 -0
  27. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/models/__init__.py +0 -0
  28. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/models/envelope.py +0 -0
  29. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/models/requests.py +0 -0
  30. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/models/responses.py +0 -0
  31. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/models/snapshots.py +0 -0
  32. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/py.typed +0 -0
  33. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/run_auto.py +0 -0
  34. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/sse.py +0 -0
  35. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/test.py +0 -0
  36. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/test_pipeline.py +0 -0
  37. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/sdk/updater.py +0 -0
  38. {devops_bot_sdk-1.4.78 → devops_bot_sdk-1.4.79}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devops-bot-sdk
3
- Version: 1.4.78
3
+ Version: 1.4.79
4
4
  Summary: DevOps Bot Desktop SDK — thin client for the AgentOS Electron desktop app
5
5
  Author: noumanaziz2128
6
6
  License-Expression: LicenseRef-Proprietary
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devops-bot-sdk
3
- Version: 1.4.78
3
+ Version: 1.4.79
4
4
  Summary: DevOps Bot Desktop SDK — thin client for the AgentOS Electron desktop app
5
5
  Author: noumanaziz2128
6
6
  License-Expression: LicenseRef-Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devops-bot-sdk"
7
- version = "1.4.78"
7
+ version = "1.4.79"
8
8
  description = "DevOps Bot Desktop SDK — thin client for the AgentOS Electron desktop app"
9
9
  readme = "README.md"
10
10
  license = "LicenseRef-Proprietary"
@@ -1,6 +1,6 @@
1
1
  """AgentOS Desktop SDK — thin HTTPS/SSE client for the Electron app.
2
2
 
3
- Version: 1.4.78
3
+ Version: 1.4.79
4
4
 
5
5
  Public surface:
6
6
  BackendClient.from_config() — create client from ~/.agentos/config.toml
@@ -30,7 +30,7 @@ Rules:
30
30
  - All data egress through submit_webhook only
31
31
  """
32
32
 
33
- __version__ = "1.4.78"
33
+ __version__ = "1.4.79"
34
34
  __author__ = "AgentOS"
35
35
 
36
36
  from sdk.client import BackendClient
@@ -58,7 +58,7 @@ def _notify_status(task_id: str, status: str) -> None:
58
58
  pass
59
59
 
60
60
 
61
- SDK_VERSION = "1.4.78"
61
+ SDK_VERSION = "1.4.79"
62
62
  _POLL_INTERVAL = 3.0
63
63
  _POLL_TIMEOUT = 600.0
64
64
  _ORCHESTRATE_TIMEOUT = 2700.0 # 45 min — covers approval wait + VPS execution time
@@ -531,7 +531,7 @@ _PRD_FORMAT = (
531
531
 
532
532
 
533
533
  def _build_epic_prompt(jira_key: str, summary: str, description: str | None,
534
- human_instructions: str | None) -> str:
534
+ human_instructions: str | None, story_count: int | None = None) -> str:
535
535
  """Read-only prompt that turns an Epic into a decomposition JSON."""
536
536
  parts: list[str] = [
537
537
  "You are decomposing a JIRA EPIC into implementable user stories. This is "
@@ -650,6 +650,37 @@ _STORIES_DIR_HINT = re.compile(
650
650
  )
651
651
 
652
652
 
653
+ # An explicit "build N user stories" count in the description/instructions.
654
+ _STORY_COUNT_WORDS = {
655
+ "one": 1, "two": 2, "three": 3, "four": 4, "five": 5, "six": 6,
656
+ "seven": 7, "eight": 8, "nine": 9, "ten": 10, "eleven": 11, "twelve": 12,
657
+ }
658
+ _STORY_COUNT_RE = re.compile(
659
+ r"\b(\d{1,2})\s+(?:user\s+)?stor(?:y|ies)\b"
660
+ r"|\b(one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)"
661
+ r"\s+(?:user\s+)?stor(?:y|ies)\b",
662
+ re.I,
663
+ )
664
+
665
+
666
+ def _extract_story_count(text: str | None) -> int | None:
667
+ """A requested number of user stories from the text (e.g. "build 3 user stories",
668
+ "create five stories"), or None. Bounded to a sane max."""
669
+ if not text:
670
+ return None
671
+ m = _STORY_COUNT_RE.search(text)
672
+ if not m:
673
+ return None
674
+ if m.group(1):
675
+ try:
676
+ n = int(m.group(1))
677
+ except ValueError:
678
+ return None
679
+ else:
680
+ n = _STORY_COUNT_WORDS.get((m.group(2) or "").lower(), 0)
681
+ return min(n, 50) if n and n >= 1 else None
682
+
683
+
653
684
  def _extract_stories_dir(text: str | None) -> str | None:
654
685
  """A directory the instructions ask the user stories to be WRITTEN into, or None.
655
686