palonexus 0.3.0__tar.gz → 0.3.2__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.
- {palonexus-0.3.0 → palonexus-0.3.2}/PKG-INFO +1 -1
- palonexus-0.3.2/src/palonexus/_build.py +2 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_sdist_provenance.py +1 -1
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_version.py +2 -2
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/cli/commands.py +27 -2
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/cli/main.py +14 -3
- palonexus-0.3.0/src/palonexus/_build.py +0 -2
- {palonexus-0.3.0 → palonexus-0.3.2}/.gitignore +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/LICENSE +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/hatch_build.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/pyproject.toml +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_canonicalize.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_generated/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_generated/protocol.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/approvals.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/async_client.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/cli/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/client.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/context.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/credentials.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/client.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/context.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/contracts.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/credentials.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/guard.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/runner.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/scaffold.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/subagents.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/agent.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/fixtures/release-change.json +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/palonexus-agent.yaml +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/palonexus-registration.yaml +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/pyproject.toml.tmpl +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/version.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/errors.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/did.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/oidc.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/vc.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/deepagents.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/langchain.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/langgraph.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/keystore.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/models.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/protocol.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/py.typed +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/redaction.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/retry.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/testing/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/testing/fake_transport.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/testing/mock_server.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/transports/__init__.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/transports/base.py +0 -0
- {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/transports/http.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: palonexus
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Python SDK for the PaloNexus agent control plane
|
|
5
5
|
Project-URL: Homepage, https://github.com/rogerchucker/palonexus-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/rogerchucker/palonexus-sdk
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 3,
|
|
21
|
+
__version__ = version = '0.3.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 3, 2)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -22,6 +22,7 @@ from packaging.version import InvalidVersion, Version
|
|
|
22
22
|
from palonexus.developer.client import (
|
|
23
23
|
DeveloperClient,
|
|
24
24
|
DeveloperClientError,
|
|
25
|
+
ProtocolError,
|
|
25
26
|
RequestRejected,
|
|
26
27
|
_origin,
|
|
27
28
|
_registration_authority_profile,
|
|
@@ -139,6 +140,8 @@ def login(args: Namespace) -> int:
|
|
|
139
140
|
|
|
140
141
|
try:
|
|
141
142
|
client.login(store, on_authorization=display)
|
|
143
|
+
except KeyboardInterrupt as error:
|
|
144
|
+
raise CommandError("Login canceled.", 130) from error
|
|
142
145
|
except (DeveloperClientError, CredentialStoreUnavailable) as error:
|
|
143
146
|
raise CommandError(f"login failed: {error}") from error
|
|
144
147
|
if getattr(args, "register", False):
|
|
@@ -809,6 +812,7 @@ def agents_register(args: Namespace) -> int:
|
|
|
809
812
|
result, recovered = _register_with_recovery(
|
|
810
813
|
client, session, agent, descriptor, cli_version
|
|
811
814
|
)
|
|
815
|
+
_retire_stale_ceiling_request(agent, str(result["descriptor_digest"]))
|
|
812
816
|
agent["agent_id"] = str(result["agent_id"])
|
|
813
817
|
agent["agent_generation"] = str(result["generation"])
|
|
814
818
|
agent["registered_descriptor_digest"] = str(result["descriptor_digest"])
|
|
@@ -883,6 +887,23 @@ def register_agent(args: Namespace) -> int:
|
|
|
883
887
|
return agents_register(args)
|
|
884
888
|
|
|
885
889
|
|
|
890
|
+
def _retire_stale_ceiling_request(
|
|
891
|
+
agent: dict[str, str], registered_descriptor_digest: str
|
|
892
|
+
) -> None:
|
|
893
|
+
request_id = agent.get("ceiling_request_id")
|
|
894
|
+
encoded_body = agent.get("ceiling_request_body")
|
|
895
|
+
if request_id is None or encoded_body is None:
|
|
896
|
+
return
|
|
897
|
+
try:
|
|
898
|
+
body = decode_strict_json(encoded_body.encode("utf-8"), _CEILING_BODY_FIELDS)
|
|
899
|
+
except ProtocolError:
|
|
900
|
+
return
|
|
901
|
+
if body.get("descriptorDigest") == registered_descriptor_digest:
|
|
902
|
+
return
|
|
903
|
+
agent.pop("ceiling_request_id", None)
|
|
904
|
+
agent.pop("ceiling_request_body", None)
|
|
905
|
+
|
|
906
|
+
|
|
886
907
|
def _new_ceiling_request(
|
|
887
908
|
agent: dict[str, str], descriptor: dict[str, Any]
|
|
888
909
|
) -> tuple[str, dict[str, Any]]:
|
|
@@ -1497,8 +1518,12 @@ def logout(args: Namespace) -> int:
|
|
|
1497
1518
|
return 0
|
|
1498
1519
|
|
|
1499
1520
|
|
|
1500
|
-
def version(
|
|
1501
|
-
|
|
1521
|
+
def version(args: Namespace) -> int:
|
|
1522
|
+
metadata = version_metadata()
|
|
1523
|
+
if getattr(args, "json", False):
|
|
1524
|
+
print(json.dumps(metadata, sort_keys=True, separators=(",", ":")))
|
|
1525
|
+
else:
|
|
1526
|
+
print(f"pnxs {metadata['version']}")
|
|
1502
1527
|
return 0
|
|
1503
1528
|
|
|
1504
1529
|
|
|
@@ -10,7 +10,15 @@ from . import commands
|
|
|
10
10
|
|
|
11
11
|
def build_parser() -> argparse.ArgumentParser:
|
|
12
12
|
parser = argparse.ArgumentParser(prog="pnxs", allow_abbrev=False)
|
|
13
|
-
|
|
13
|
+
parser.set_defaults(json=False)
|
|
14
|
+
parser.add_argument(
|
|
15
|
+
"--version",
|
|
16
|
+
dest="handler",
|
|
17
|
+
action="store_const",
|
|
18
|
+
const=commands.version,
|
|
19
|
+
help="show the installed pnxs version and exit",
|
|
20
|
+
)
|
|
21
|
+
subcommands = parser.add_subparsers(dest="command")
|
|
14
22
|
|
|
15
23
|
login = subcommands.add_parser("login", allow_abbrev=False)
|
|
16
24
|
login.add_argument("--tenant")
|
|
@@ -98,13 +106,16 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
98
106
|
logout.set_defaults(handler=commands.logout)
|
|
99
107
|
|
|
100
108
|
version = subcommands.add_parser("version", allow_abbrev=False)
|
|
101
|
-
version.add_argument("--json", action="store_true"
|
|
109
|
+
version.add_argument("--json", action="store_true")
|
|
102
110
|
version.set_defaults(handler=commands.version)
|
|
103
111
|
return parser
|
|
104
112
|
|
|
105
113
|
|
|
106
114
|
def main(argv: Sequence[str] | None = None) -> int:
|
|
107
|
-
|
|
115
|
+
parser = build_parser()
|
|
116
|
+
args = parser.parse_args(argv)
|
|
117
|
+
if getattr(args, "handler", None) is None:
|
|
118
|
+
parser.error("a command is required")
|
|
108
119
|
try:
|
|
109
120
|
return int(args.handler(args))
|
|
110
121
|
except commands.CommandError as error:
|
|
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
|
{palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/__init__.py
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
|