devops-bot-sdk 1.4.94__tar.gz → 1.4.96__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.
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/PKG-INFO +1 -1
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/PKG-INFO +1 -1
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/pyproject.toml +1 -1
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/__init__.py +2 -2
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/client.py +11 -3
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/ipc/handlers.py +15 -6
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/README.md +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/SOURCES.txt +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/dependency_links.txt +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/entry_points.txt +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/requires.txt +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/top_level.txt +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/collectors/__init__.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/collectors/files.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/collectors/process.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/collectors/screenshot.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/config.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/crucial.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/exceptions.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/git_ops.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/graphify.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/hooks/__init__.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/hooks/crucial_guard.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/ipc/__init__.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/ipc/electron_bridge.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/local_exec.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/models/__init__.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/models/envelope.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/models/requests.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/models/responses.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/models/snapshots.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/py.typed +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/run_auto.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/sse.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/test.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/test_pipeline.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/sdk/updater.py +0 -0
- {devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/setup.cfg +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devops-bot-sdk"
|
|
7
|
-
version = "1.4.
|
|
7
|
+
version = "1.4.96"
|
|
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.
|
|
3
|
+
Version: 1.4.96
|
|
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.
|
|
33
|
+
__version__ = "1.4.96"
|
|
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.
|
|
61
|
+
SDK_VERSION = "1.4.96"
|
|
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
|
|
@@ -849,9 +849,17 @@ class BackendClient:
|
|
|
849
849
|
headers = {k: v for k, v in self._headers.items() if k.lower() != "content-type"}
|
|
850
850
|
headers.update({"accept": "*/*", "developer-name": "null", "product": ""})
|
|
851
851
|
# POST /tasks-ml must never carry an SLA target — the backend validator
|
|
852
|
-
# rejects any value not shaped like "8h"
|
|
852
|
+
# rejects any value not shaped like "8h" (an empty "" 400s with
|
|
853
|
+
# "Slatarget must be a positive integer of hours…"), and SLA is not ours
|
|
854
|
+
# to set. Drop it by NORMALISED name so every casing/separator variant
|
|
855
|
+
# (slaTarget, slaTargets, sla_target, SLATarget, sla-target, …) is
|
|
856
|
+
# excluded — never sent as "" or anything else, always an empty field.
|
|
857
|
+
def _is_sla(key: str) -> bool:
|
|
858
|
+
norm = "".join(ch for ch in key.lower() if ch.isalnum())
|
|
859
|
+
return norm in ("slatarget", "slatargets")
|
|
860
|
+
|
|
853
861
|
files = [(k, (None, str(v))) for k, v in fields.items()
|
|
854
|
-
if v is not None and
|
|
862
|
+
if v is not None and not _is_sla(k)]
|
|
855
863
|
for m in (model_used or []):
|
|
856
864
|
files.append(("modelUsed[]", (None, str(m)))) # [] → backend parses as array
|
|
857
865
|
try:
|
|
@@ -1355,13 +1355,22 @@ async def _handle_story(
|
|
|
1355
1355
|
# The Story is complete — nothing to convert or code in this run.
|
|
1356
1356
|
return None
|
|
1357
1357
|
|
|
1358
|
-
# STEP 1 —
|
|
1359
|
-
#
|
|
1360
|
-
#
|
|
1361
|
-
#
|
|
1358
|
+
# STEP 1 — do we have CODEBASE UNDERSTANDING to ground a PRD in? That means an
|
|
1359
|
+
# actual repo target (a github/gitlab/bitbucket link in the instructions OR the
|
|
1360
|
+
# story), or dev work called for in the OPERATOR INSTRUCTIONS (PRs, branches,
|
|
1361
|
+
# endpoints, deploy, …).
|
|
1362
|
+
#
|
|
1363
|
+
# Deliberately NOT keyed off the story DESCRIPTION's vocabulary or a "PRD"
|
|
1364
|
+
# mention: a business/BA user story that merely contains technical words
|
|
1365
|
+
# (endpoint, API, database, "PRD", …) is NOT a codebase task. Keying off the
|
|
1366
|
+
# description used to false-positive such stories into PRD generation, which
|
|
1367
|
+
# folded an unwanted PRD into — and mangled — the operator's own document.
|
|
1362
1368
|
has_repo = bool(_extract_repo_targets(human)) or bool(_extract_repo_targets(user_story))
|
|
1363
|
-
is_codebase_task = has_repo or _is_dev_task(human)
|
|
1364
|
-
|
|
1369
|
+
is_codebase_task = has_repo or _is_dev_task(human)
|
|
1370
|
+
# PRD ONLY when we have codebase understanding. Without a repo/codebase, the
|
|
1371
|
+
# Story is converted to a Task with its description left intact (the whole,
|
|
1372
|
+
# proper document the operator provided) — never rewritten with a PRD.
|
|
1373
|
+
wants_prd = is_codebase_task
|
|
1365
1374
|
|
|
1366
1375
|
if is_codebase_task:
|
|
1367
1376
|
step = ("validated as a codebase task — building a technical PRD from the "
|
|
File without changes
|
|
File without changes
|
{devops_bot_sdk-1.4.94 → devops_bot_sdk-1.4.96}/devops_bot_sdk.egg-info/dependency_links.txt
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|