devops-bot-sdk 1.4.58__tar.gz → 1.4.60__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.58 → devops_bot_sdk-1.4.60}/PKG-INFO +1 -1
  2. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
  3. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/pyproject.toml +1 -1
  4. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/__init__.py +2 -2
  5. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/client.py +1 -1
  6. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/ipc/handlers.py +28 -11
  7. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/README.md +0 -0
  8. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/devops_bot_sdk.egg-info/SOURCES.txt +0 -0
  9. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
  10. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
  11. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/devops_bot_sdk.egg-info/requires.txt +0 -0
  12. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/devops_bot_sdk.egg-info/top_level.txt +0 -0
  13. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/collectors/__init__.py +0 -0
  14. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/collectors/files.py +0 -0
  15. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/collectors/process.py +0 -0
  16. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/collectors/screenshot.py +0 -0
  17. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/config.py +0 -0
  18. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/crucial.py +0 -0
  19. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/exceptions.py +0 -0
  20. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/git_ops.py +0 -0
  21. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/graphify.py +0 -0
  22. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/hooks/__init__.py +0 -0
  23. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/hooks/crucial_guard.py +0 -0
  24. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/ipc/__init__.py +0 -0
  25. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/ipc/electron_bridge.py +0 -0
  26. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/local_exec.py +0 -0
  27. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/models/__init__.py +0 -0
  28. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/models/envelope.py +0 -0
  29. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/models/requests.py +0 -0
  30. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/models/responses.py +0 -0
  31. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/models/snapshots.py +0 -0
  32. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/py.typed +0 -0
  33. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/run_auto.py +0 -0
  34. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/sse.py +0 -0
  35. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/test.py +0 -0
  36. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/test_pipeline.py +0 -0
  37. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/sdk/updater.py +0 -0
  38. {devops_bot_sdk-1.4.58 → devops_bot_sdk-1.4.60}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devops-bot-sdk
3
- Version: 1.4.58
3
+ Version: 1.4.60
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.58
3
+ Version: 1.4.60
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.58"
7
+ version = "1.4.60"
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.58
3
+ Version: 1.4.60
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.58"
33
+ __version__ = "1.4.60"
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.58"
61
+ SDK_VERSION = "1.4.60"
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
@@ -573,27 +573,37 @@ def _build_validation_prompt(kind: str, jira_key: str, summary: str,
573
573
  "Human Instructions:\n" + (human.strip() if human and human.strip() else "(none provided)"),
574
574
  ]
575
575
  parts.append(
576
+ "Judge the ticket in the context of what it ACTUALLY asks for — it may be "
577
+ "software, documentation, analysis, Finance, HR or operations work. Do NOT "
578
+ "impose software requirements on a non-software ticket.\n\n"
576
579
  "A VALID ticket MUST have:\n"
577
580
  "- A clear, unambiguous goal and scope (no hand-waving).\n"
578
- "- Explicit Human Instructions: for codebase work, the repository link(s) "
579
- "and/or file path(s), the branch/PR convention, and build/run/test steps.\n"
580
- "- Observable, testable acceptance criteria.\n"
581
+ "- A clearly-defined deliverable or outcome, and when a location matters — "
582
+ "WHERE to produce it (a folder path, a repository, or a document).\n"
583
+ "- Observable, testable acceptance criteria (or an equally concrete definition of done).\n"
584
+ "- ONLY IF the work requires CODE CHANGES to a software project: the target "
585
+ "repository link(s) and/or file path(s), the branch/PR convention, and "
586
+ "build/run/test steps. Do NOT demand these for documentation, content, analysis "
587
+ "or other non-code deliverables.\n"
581
588
  + ("- Enough concrete detail to decompose into independent user stories.\n"
582
589
  if kind == "epic" else
583
590
  "- A clear 'As a <role>, I want <capability>, so that <benefit>' intent plus "
584
591
  "testable acceptance criteria.\n")
585
- + "- Any THIRD-PARTY INTEGRATION or human-effort dependency (API keys, OAuth "
586
- "credentials, external accounts, secrets, manual provisioning, DNS, billing) "
587
- "MUST be named explicitly WITH who provides it. If such a dependency is implied "
588
- "but undefined/missing, REJECT.\n\n"
592
+ + "- Any THIRD-PARTY INTEGRATION or human-effort dependency the work GENUINELY "
593
+ "needs (API keys, OAuth credentials, external accounts, secrets, manual "
594
+ "provisioning, DNS, billing) MUST be named WITH who provides it; if such a "
595
+ "REQUIRED dependency is undefined, REJECT.\n\n"
596
+ "A ticket that clearly states its deliverable and where to produce it is VALID "
597
+ "even without repository/branch details. Reject only for genuinely missing or "
598
+ "ambiguous information — not for absent software details the task does not need.\n\n"
589
599
  "Output ONLY a fenced ```json block, nothing else:\n"
590
600
  "{\n"
591
601
  ' "valid": true or false,\n'
592
602
  ' "comment": "When invalid: a concise, TECHNICAL rejection that lists EXACTLY '
593
- "what is missing or ambiguous and must be added. Use precise engineering "
594
- "terminology (API contract, data model/schema, auth/OAuth flow, env/config, "
595
- "acceptance criteria, target repository/branch, integration credentials & "
596
- 'ownership). When valid: empty string."\n'
603
+ "what is missing or ambiguous and must be added, in terms appropriate to the "
604
+ "ticket's domain (for software: API contract, data model/schema, auth flow, "
605
+ "env/config, target repository/branch; for other work: the missing deliverable, "
606
+ 'location, criteria, or dependency). When valid: empty string."\n'
597
607
  "}"
598
608
  )
599
609
  return "\n\n".join(parts)
@@ -651,6 +661,13 @@ async def _validate_ticket_or_reject(
651
661
  "criteria; and the credentials/ownership for any third-party integration.")
652
662
  body = f"{_AI_COMMENT_LABEL}\n\n{comment or fallback}"
653
663
  await client.add_comment(tid, body)
664
+ # The backend only accepts a Backlog transition when a timer is running, so start
665
+ # one (mark In Progress) then park it — otherwise move_to_backlog 404s with
666
+ # "No running timer found". This In-Progress blip is the reject/park path only.
667
+ try:
668
+ await client.mark_in_progress(tid)
669
+ except Exception: # noqa: BLE001
670
+ pass
654
671
  await client.move_to_backlog(tid)
655
672
  await client.log_activity(f"{kind} {jira_key}: REJECTED by validation gate — commented + moved to Backlog")
656
673
  await send(Envelope(