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.
Files changed (59) hide show
  1. {palonexus-0.3.0 → palonexus-0.3.2}/PKG-INFO +1 -1
  2. palonexus-0.3.2/src/palonexus/_build.py +2 -0
  3. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_sdist_provenance.py +1 -1
  4. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_version.py +2 -2
  5. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/cli/commands.py +27 -2
  6. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/cli/main.py +14 -3
  7. palonexus-0.3.0/src/palonexus/_build.py +0 -2
  8. {palonexus-0.3.0 → palonexus-0.3.2}/.gitignore +0 -0
  9. {palonexus-0.3.0 → palonexus-0.3.2}/LICENSE +0 -0
  10. {palonexus-0.3.0 → palonexus-0.3.2}/hatch_build.py +0 -0
  11. {palonexus-0.3.0 → palonexus-0.3.2}/pyproject.toml +0 -0
  12. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/__init__.py +0 -0
  13. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_canonicalize.py +0 -0
  14. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_generated/__init__.py +0 -0
  15. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/_generated/protocol.py +0 -0
  16. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/approvals.py +0 -0
  17. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/async_client.py +0 -0
  18. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/cli/__init__.py +0 -0
  19. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/client.py +0 -0
  20. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/context.py +0 -0
  21. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/credentials.py +0 -0
  22. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/__init__.py +0 -0
  23. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/client.py +0 -0
  24. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/context.py +0 -0
  25. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/contracts.py +0 -0
  26. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/credentials.py +0 -0
  27. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/guard.py +0 -0
  28. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/runner.py +0 -0
  29. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/scaffold.py +0 -0
  30. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/subagents.py +0 -0
  31. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/__init__.py +0 -0
  32. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/__init__.py +0 -0
  33. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/agent.py +0 -0
  34. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/fixtures/release-change.json +0 -0
  35. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/palonexus-agent.yaml +0 -0
  36. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/palonexus-registration.yaml +0 -0
  37. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/templates/plain_python/pyproject.toml.tmpl +0 -0
  38. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/developer/version.py +0 -0
  39. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/errors.py +0 -0
  40. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/__init__.py +0 -0
  41. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/did.py +0 -0
  42. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/oidc.py +0 -0
  43. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/identity/vc.py +0 -0
  44. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/__init__.py +0 -0
  45. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/deepagents.py +0 -0
  46. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/langchain.py +0 -0
  47. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/integrations/langgraph.py +0 -0
  48. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/keystore.py +0 -0
  49. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/models.py +0 -0
  50. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/protocol.py +0 -0
  51. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/py.typed +0 -0
  52. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/redaction.py +0 -0
  53. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/retry.py +0 -0
  54. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/testing/__init__.py +0 -0
  55. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/testing/fake_transport.py +0 -0
  56. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/testing/mock_server.py +0 -0
  57. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/transports/__init__.py +0 -0
  58. {palonexus-0.3.0 → palonexus-0.3.2}/src/palonexus/transports/base.py +0 -0
  59. {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.0
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
@@ -0,0 +1,2 @@
1
+ # generated by the PaloNexus build hook
2
+ SOURCE_REVISION = "58e2607d1c2ed32be5a4fc7c9a334be66bd8e347"
@@ -1,3 +1,3 @@
1
1
  # generated by the PaloNexus build hook
2
2
  SDIST_MARKER = "palonexus-sdk-sdist-v1"
3
- SOURCE_REVISION = "a31fb765278faa27455e8697489f1155fe6c8be2"
3
+ SOURCE_REVISION = "58e2607d1c2ed32be5a4fc7c9a334be66bd8e347"
@@ -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.0'
22
- __version_tuple__ = version_tuple = (0, 3, 0)
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(_args: Namespace) -> int:
1501
- print(json.dumps(version_metadata(), sort_keys=True, separators=(",", ":")))
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
- subcommands = parser.add_subparsers(dest="command", required=True)
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", required=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
- args = build_parser().parse_args(argv)
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:
@@ -1,2 +0,0 @@
1
- # generated by the PaloNexus build hook
2
- SOURCE_REVISION = "a31fb765278faa27455e8697489f1155fe6c8be2"
File without changes
File without changes
File without changes
File without changes