aac-cli 0.2.8__tar.gz → 0.2.9__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.
- {aac_cli-0.2.8/aac_cli.egg-info → aac_cli-0.2.9}/PKG-INFO +12 -11
- {aac_cli-0.2.8 → aac_cli-0.2.9}/README.md +10 -9
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/__init__.py +1 -1
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/agent_cli.py +4 -4
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/config_render.py +20 -4
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/material_cases.py +1 -1
- {aac_cli-0.2.8 → aac_cli-0.2.9/aac_cli.egg-info}/PKG-INFO +12 -11
- {aac_cli-0.2.8 → aac_cli-0.2.9}/pyproject.toml +2 -2
- {aac_cli-0.2.8 → aac_cli-0.2.9}/LICENSE +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/MANIFEST.in +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/NOTICE +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/THIRD_PARTY_NOTICES.md +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/__main__.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/__init__.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/cli.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/data/action-taken-v1.json +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/data/predicates-v1.json +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/data/renderer-source.json +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/from_sidecar.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/inputs.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/model.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/narrative.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/provenance.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/schemas.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/temporal.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/theme.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/timeline_source.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/_aeg/visualizer.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/admin_key_pem.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/aeg_cli.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/aeg_list.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/agent_config.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/agent_health.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/agent_layout.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/agent_record.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/api_key_rotation_state.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/chain_list.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/cli.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/config.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/dev_material.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/idp_recovery.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/init_cli.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/profiles.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/reference.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/registration_state.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/secure_files.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/sso_login.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/supplied_material.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli/trace_query.py +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli.egg-info/SOURCES.txt +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli.egg-info/dependency_links.txt +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli.egg-info/requires.txt +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/aac_cli.egg-info/top_level.txt +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/launchers/aac +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/launchers/aeg +0 -0
- {aac_cli-0.2.8 → aac_cli-0.2.9}/setup.cfg +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aac-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
4
4
|
Summary: The aac platform CLI — headless operator interface to the AAC control plane (tenant registration, chain audit).
|
|
5
5
|
Author: Agent Authority Cloud Project
|
|
6
6
|
License-Expression: Apache-2.0
|
|
7
|
-
Project-URL: Documentation, https://cascadeauth.
|
|
7
|
+
Project-URL: Documentation, https://docs.cascadeauth.com/cli/
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -34,12 +34,13 @@ which tenant they belong to and what they were authorised to do. A
|
|
|
34
34
|
runs beside an AAC sidecar that signs outgoing requests and verifies
|
|
35
35
|
incoming ones against public trust material the tenant publishes.
|
|
36
36
|
|
|
37
|
-
New to AAC? [What AAC is for](https://cascadeauth.
|
|
37
|
+
New to AAC? [What AAC is for](https://docs.cascadeauth.com/overview/#what-aac-is-for)
|
|
38
38
|
explains what delegated authority between agents buys you, and what it does not.
|
|
39
39
|
|
|
40
|
-
The [CLI user guide and complete command reference](https://cascadeauth.
|
|
40
|
+
The [CLI user guide and complete command reference](https://docs.cascadeauth.com/cli/)
|
|
41
41
|
cover developer and enterprise onboarding, everyday administration and recovery.
|
|
42
|
-
|
|
42
|
+
These pages describe the latest supported release. Upgrade the CLI to use the
|
|
43
|
+
documented commands, and check your installation with `aac --version`.
|
|
43
44
|
|
|
44
45
|
The `aac` command is how a tenant's operator does everything that is not
|
|
45
46
|
done by the sidecar itself: register the tenant, sign in, manage keys,
|
|
@@ -77,7 +78,7 @@ Python 3.11 to 3.14 is supported. Release checks test all four versions.
|
|
|
77
78
|
## Use `aeg` to view agent execution graphs
|
|
78
79
|
|
|
79
80
|
Installing or upgrading `aac-cli` supplies both `aac` and `aeg`.
|
|
80
|
-
Use the [AEG guide and command reference](https://cascadeauth.
|
|
81
|
+
Use the [AEG guide and command reference](https://docs.cascadeauth.com/aeg/)
|
|
81
82
|
for listing local and central observations, rendering evidence, and selecting a profile.
|
|
82
83
|
|
|
83
84
|
`aeg list --profile PROFILE --since 7d` discovers participant-visible central
|
|
@@ -111,7 +112,7 @@ Google developer sign-in. See “Setting up aac-cli on a new computer” below
|
|
|
111
112
|
for the existing-tenant sign-in and material preparation steps.
|
|
112
113
|
|
|
113
114
|
Setup uses the tenant's assigned trust domain and writes the files the
|
|
114
|
-
trust
|
|
115
|
+
trust anchor publisher and Docker Compose need, as well as the sidecar
|
|
115
116
|
configuration. By default it generates development keys and certificates;
|
|
116
117
|
the certificate choices below explain how to supply your own instead.
|
|
117
118
|
|
|
@@ -341,7 +342,7 @@ and destination maps allow at most 128 entries each.
|
|
|
341
342
|
| `destinations.<name>.audience_pattern` | Required exact registered SPIFFE identity; no wildcard. | None |
|
|
342
343
|
| `destinations.<name>.predicates`, `.valid_for` | Same value/duration contract as classes. | Empty predicates; duration required |
|
|
343
344
|
| `destinations.<name>.timeout_ms` | Integer 1–2147483647 without A2A; 1–60000 for every destination when A2A is enabled, matching its generated deadline. | `10000` |
|
|
344
|
-
| `a2a.public_base_url`, `a2a.local_handler_url` | Optional A2A block; both required if present. Public URL is HTTPS with no path except optional `/`; the HTTP(S) local handler path must be exactly `/a2a/v1`, with no escaped spelling. Neither URL permits query or fragment markers, even empty ones. Managed A2A state paths
|
|
345
|
+
| `a2a.public_base_url`, `a2a.local_handler_url` | Optional A2A block; both required if present. Public URL is HTTPS with no path except optional `/`; the HTTP(S) local handler path must be exactly `/a2a/v1`, with no escaped spelling. Neither URL permits query or fragment markers, even empty ones. Managed A2A state paths, a 60-second deadline and retry-state capacity are generated; the capacity holds the acknowledgement of the largest reply, which carries the peer's reply to your agent. No A2A self-route is added. | A2A disabled |
|
|
345
346
|
|
|
346
347
|
URL hosts are ASCII DNS names or IP addresses; URL fields reject whitespace,
|
|
347
348
|
backslashes, embedded credentials and fragments. Basic replay history
|
|
@@ -438,7 +439,7 @@ The laptop case. The CLI creates a certificate authority on this machine and sig
|
|
|
438
439
|
|
|
439
440
|
**Renewal.** `aac agent renew --agent <name>` issues fresh certificates from the same CA.
|
|
440
441
|
|
|
441
|
-
#### I bring my own CA
|
|
442
|
+
#### I bring my own CA certificate
|
|
442
443
|
|
|
443
444
|
Your own issuer has signed the agent's certificates, and your CA private key never reaches this machine. Certificate source alone does not qualify a production deployment.
|
|
444
445
|
|
|
@@ -507,7 +508,7 @@ name and `<tenant-id>` the tenant id AAC allocated.
|
|
|
507
508
|
For what each of these proves, who else ever gets a copy, what never leaves you
|
|
508
509
|
and how the pieces fit together — including when your own certificate authority
|
|
509
510
|
signs instead of this tool — see
|
|
510
|
-
[Keys and certificates](https://cascadeauth.
|
|
511
|
+
[Keys and certificates](https://docs.cascadeauth.com/overview/keys-and-certificates/).
|
|
511
512
|
|
|
512
513
|
<!-- inventory-table:start -->
|
|
513
514
|
| No. | Material | Where | Used for | Lifetime | Back up? |
|
|
@@ -902,7 +903,7 @@ are described by their `--help`.
|
|
|
902
903
|
### Keys
|
|
903
904
|
|
|
904
905
|
Replacing the tenant-admin key is immediate and forward-only: the previous
|
|
905
|
-
key stops verifying at once and can never be reinstated. The trust
|
|
906
|
+
key stops verifying at once and can never be reinstated. The trust anchor
|
|
906
907
|
publisher signs its uploads with this key and loads it once, at start, so
|
|
907
908
|
sequence the change: stop the publisher, register the new public half, put
|
|
908
909
|
the new private key where the publisher's configuration points, start the
|
|
@@ -7,12 +7,13 @@ which tenant they belong to and what they were authorised to do. A
|
|
|
7
7
|
runs beside an AAC sidecar that signs outgoing requests and verifies
|
|
8
8
|
incoming ones against public trust material the tenant publishes.
|
|
9
9
|
|
|
10
|
-
New to AAC? [What AAC is for](https://cascadeauth.
|
|
10
|
+
New to AAC? [What AAC is for](https://docs.cascadeauth.com/overview/#what-aac-is-for)
|
|
11
11
|
explains what delegated authority between agents buys you, and what it does not.
|
|
12
12
|
|
|
13
|
-
The [CLI user guide and complete command reference](https://cascadeauth.
|
|
13
|
+
The [CLI user guide and complete command reference](https://docs.cascadeauth.com/cli/)
|
|
14
14
|
cover developer and enterprise onboarding, everyday administration and recovery.
|
|
15
|
-
|
|
15
|
+
These pages describe the latest supported release. Upgrade the CLI to use the
|
|
16
|
+
documented commands, and check your installation with `aac --version`.
|
|
16
17
|
|
|
17
18
|
The `aac` command is how a tenant's operator does everything that is not
|
|
18
19
|
done by the sidecar itself: register the tenant, sign in, manage keys,
|
|
@@ -50,7 +51,7 @@ Python 3.11 to 3.14 is supported. Release checks test all four versions.
|
|
|
50
51
|
## Use `aeg` to view agent execution graphs
|
|
51
52
|
|
|
52
53
|
Installing or upgrading `aac-cli` supplies both `aac` and `aeg`.
|
|
53
|
-
Use the [AEG guide and command reference](https://cascadeauth.
|
|
54
|
+
Use the [AEG guide and command reference](https://docs.cascadeauth.com/aeg/)
|
|
54
55
|
for listing local and central observations, rendering evidence, and selecting a profile.
|
|
55
56
|
|
|
56
57
|
`aeg list --profile PROFILE --since 7d` discovers participant-visible central
|
|
@@ -84,7 +85,7 @@ Google developer sign-in. See “Setting up aac-cli on a new computer” below
|
|
|
84
85
|
for the existing-tenant sign-in and material preparation steps.
|
|
85
86
|
|
|
86
87
|
Setup uses the tenant's assigned trust domain and writes the files the
|
|
87
|
-
trust
|
|
88
|
+
trust anchor publisher and Docker Compose need, as well as the sidecar
|
|
88
89
|
configuration. By default it generates development keys and certificates;
|
|
89
90
|
the certificate choices below explain how to supply your own instead.
|
|
90
91
|
|
|
@@ -314,7 +315,7 @@ and destination maps allow at most 128 entries each.
|
|
|
314
315
|
| `destinations.<name>.audience_pattern` | Required exact registered SPIFFE identity; no wildcard. | None |
|
|
315
316
|
| `destinations.<name>.predicates`, `.valid_for` | Same value/duration contract as classes. | Empty predicates; duration required |
|
|
316
317
|
| `destinations.<name>.timeout_ms` | Integer 1–2147483647 without A2A; 1–60000 for every destination when A2A is enabled, matching its generated deadline. | `10000` |
|
|
317
|
-
| `a2a.public_base_url`, `a2a.local_handler_url` | Optional A2A block; both required if present. Public URL is HTTPS with no path except optional `/`; the HTTP(S) local handler path must be exactly `/a2a/v1`, with no escaped spelling. Neither URL permits query or fragment markers, even empty ones. Managed A2A state paths
|
|
318
|
+
| `a2a.public_base_url`, `a2a.local_handler_url` | Optional A2A block; both required if present. Public URL is HTTPS with no path except optional `/`; the HTTP(S) local handler path must be exactly `/a2a/v1`, with no escaped spelling. Neither URL permits query or fragment markers, even empty ones. Managed A2A state paths, a 60-second deadline and retry-state capacity are generated; the capacity holds the acknowledgement of the largest reply, which carries the peer's reply to your agent. No A2A self-route is added. | A2A disabled |
|
|
318
319
|
|
|
319
320
|
URL hosts are ASCII DNS names or IP addresses; URL fields reject whitespace,
|
|
320
321
|
backslashes, embedded credentials and fragments. Basic replay history
|
|
@@ -411,7 +412,7 @@ The laptop case. The CLI creates a certificate authority on this machine and sig
|
|
|
411
412
|
|
|
412
413
|
**Renewal.** `aac agent renew --agent <name>` issues fresh certificates from the same CA.
|
|
413
414
|
|
|
414
|
-
#### I bring my own CA
|
|
415
|
+
#### I bring my own CA certificate
|
|
415
416
|
|
|
416
417
|
Your own issuer has signed the agent's certificates, and your CA private key never reaches this machine. Certificate source alone does not qualify a production deployment.
|
|
417
418
|
|
|
@@ -480,7 +481,7 @@ name and `<tenant-id>` the tenant id AAC allocated.
|
|
|
480
481
|
For what each of these proves, who else ever gets a copy, what never leaves you
|
|
481
482
|
and how the pieces fit together — including when your own certificate authority
|
|
482
483
|
signs instead of this tool — see
|
|
483
|
-
[Keys and certificates](https://cascadeauth.
|
|
484
|
+
[Keys and certificates](https://docs.cascadeauth.com/overview/keys-and-certificates/).
|
|
484
485
|
|
|
485
486
|
<!-- inventory-table:start -->
|
|
486
487
|
| No. | Material | Where | Used for | Lifetime | Back up? |
|
|
@@ -875,7 +876,7 @@ are described by their `--help`.
|
|
|
875
876
|
### Keys
|
|
876
877
|
|
|
877
878
|
Replacing the tenant-admin key is immediate and forward-only: the previous
|
|
878
|
-
key stops verifying at once and can never be reinstated. The trust
|
|
879
|
+
key stops verifying at once and can never be reinstated. The trust anchor
|
|
879
880
|
publisher signs its uploads with this key and loads it once, at start, so
|
|
880
881
|
sequence the change: stop the publisher, register the new public half, put
|
|
881
882
|
the new private key where the publisher's configuration points, start the
|
|
@@ -10,7 +10,7 @@ tenants:
|
|
|
10
10
|
public trust endpoints.
|
|
11
11
|
* ``renew`` — in "The CLI creates a development CA" mode, reissues the one-day
|
|
12
12
|
workload, receipt and HTTPS certificates with fresh keys, and the CA only
|
|
13
|
-
when it is expired or inside its renewal window.
|
|
13
|
+
when it is expired or inside its renewal window. With supplied certificates
|
|
14
14
|
it cannot reissue what it did not sign: it takes replacements from your
|
|
15
15
|
issuer through the same flags `aac init` accepts. Retired material is
|
|
16
16
|
archived, never deleted.
|
|
@@ -64,7 +64,7 @@ from aac_cli.init_cli import (
|
|
|
64
64
|
check_settings_can_be_written,
|
|
65
65
|
write_settings_files,
|
|
66
66
|
)
|
|
67
|
-
from aac_cli.material_cases import MATERIAL_SUPPLIED, case_for
|
|
67
|
+
from aac_cli.material_cases import MATERIAL_ISSUED_HERE, MATERIAL_SUPPLIED, case_for
|
|
68
68
|
from aac_cli.secure_files import ensure_managed_directory, managed_path_problem, write_private_file
|
|
69
69
|
from aac_cli.supplied_material import resolve_supplied_replacement
|
|
70
70
|
|
|
@@ -692,10 +692,10 @@ def add_agent_parser(nouns: argparse._SubParsersAction) -> None:
|
|
|
692
692
|
"renew",
|
|
693
693
|
help="Replace the short-lived certificates; archive the old material.",
|
|
694
694
|
description=(
|
|
695
|
-
'In "
|
|
695
|
+
f'In "{case_for(MATERIAL_ISSUED_HERE).name}" mode, reissues the workload, receipt and '
|
|
696
696
|
"HTTPS certificates with new keys; the development CA is reissued only when "
|
|
697
697
|
"expired or within one day of expiry, or with --ca, and a new CA needs the "
|
|
698
|
-
'publisher to publish the new anchor. In "
|
|
698
|
+
f'publisher to publish the new anchor. In "{case_for(MATERIAL_SUPPLIED).name}" mode nothing is '
|
|
699
699
|
"reissued: pass the replacement certificates your issuer produced, each with its "
|
|
700
700
|
"key file, and --ca-cert-file if your CA certificate changed too."
|
|
701
701
|
),
|
|
@@ -32,6 +32,22 @@ from aac_cli.material_cases import MATERIAL_ISSUED_HERE, MATERIAL_SUPPLIED
|
|
|
32
32
|
LAYOUTS = ("host", "container")
|
|
33
33
|
PUBLISHER_POLL_INTERVAL_SECONDS = 60
|
|
34
34
|
|
|
35
|
+
# The sidecar bounds a peer's A2A reply by a2a.max_request_body_bytes and
|
|
36
|
+
# retains the whole dispatch acknowledgement, which embeds that reply inside
|
|
37
|
+
# 92 bytes of framing. It refuses to start unless every retained
|
|
38
|
+
# acknowledgement fits, so the three capacity values move together: the
|
|
39
|
+
# per-outcome maximum is the largest reply plus the framing, and the
|
|
40
|
+
# reservation is that maximum for every retained dispatch. The reservation is
|
|
41
|
+
# an accounting bound, not allocated storage; the database holds only the
|
|
42
|
+
# replies actually retained.
|
|
43
|
+
A2A_MAX_REQUEST_BODY_BYTES = 262144
|
|
44
|
+
A2A_ACKNOWLEDGEMENT_FRAMING_BYTES = 92
|
|
45
|
+
A2A_RETAINED_DISPATCHES_PER_PAIR = 4096
|
|
46
|
+
A2A_MAX_CACHED_RESPONSE_BODY_BYTES = A2A_MAX_REQUEST_BODY_BYTES + A2A_ACKNOWLEDGEMENT_FRAMING_BYTES
|
|
47
|
+
A2A_MAX_RESERVED_CACHED_BYTES_PER_PAIR = (
|
|
48
|
+
A2A_RETAINED_DISPATCHES_PER_PAIR * A2A_MAX_CACHED_RESPONSE_BODY_BYTES
|
|
49
|
+
)
|
|
50
|
+
|
|
35
51
|
|
|
36
52
|
def generated_header(
|
|
37
53
|
agent_name: str, material_source: str = MATERIAL_ISSUED_HERE, profile: str = "main"
|
|
@@ -189,7 +205,7 @@ def render_sidecar_config(
|
|
|
189
205
|
if "a2a" in accepted:
|
|
190
206
|
result["a2a"] = {
|
|
191
207
|
**accepted["a2a"],
|
|
192
|
-
"max_request_body_bytes":
|
|
208
|
+
"max_request_body_bytes": A2A_MAX_REQUEST_BODY_BYTES,
|
|
193
209
|
"deadline_seconds": A2A_DEADLINE_SECONDS,
|
|
194
210
|
"max_concurrent_requests": 20,
|
|
195
211
|
"max_json_nesting_depth": 32,
|
|
@@ -198,9 +214,9 @@ def render_sidecar_config(
|
|
|
198
214
|
"egress_idempotency": {
|
|
199
215
|
"state_file": paths.state(agent.a2a_egress_state),
|
|
200
216
|
"retention_seconds": 86400,
|
|
201
|
-
"max_entries_per_pair":
|
|
202
|
-
"max_cached_response_body_bytes":
|
|
203
|
-
"max_reserved_cached_bytes_per_pair":
|
|
217
|
+
"max_entries_per_pair": A2A_RETAINED_DISPATCHES_PER_PAIR,
|
|
218
|
+
"max_cached_response_body_bytes": A2A_MAX_CACHED_RESPONSE_BODY_BYTES,
|
|
219
|
+
"max_reserved_cached_bytes_per_pair": A2A_MAX_RESERVED_CACHED_BYTES_PER_PAIR,
|
|
204
220
|
},
|
|
205
221
|
}
|
|
206
222
|
return result
|
|
@@ -70,7 +70,7 @@ ISSUED_HERE = MaterialCase(
|
|
|
70
70
|
|
|
71
71
|
SUPPLIED = MaterialCase(
|
|
72
72
|
source=MATERIAL_SUPPLIED,
|
|
73
|
-
name="I bring my own CA",
|
|
73
|
+
name="I bring my own CA certificate",
|
|
74
74
|
summary=(
|
|
75
75
|
"Your own issuer has signed the agent's certificates, and your CA private key never "
|
|
76
76
|
"reaches this machine. Certificate source alone does not qualify a production deployment."
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aac-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
4
4
|
Summary: The aac platform CLI — headless operator interface to the AAC control plane (tenant registration, chain audit).
|
|
5
5
|
Author: Agent Authority Cloud Project
|
|
6
6
|
License-Expression: Apache-2.0
|
|
7
|
-
Project-URL: Documentation, https://cascadeauth.
|
|
7
|
+
Project-URL: Documentation, https://docs.cascadeauth.com/cli/
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -34,12 +34,13 @@ which tenant they belong to and what they were authorised to do. A
|
|
|
34
34
|
runs beside an AAC sidecar that signs outgoing requests and verifies
|
|
35
35
|
incoming ones against public trust material the tenant publishes.
|
|
36
36
|
|
|
37
|
-
New to AAC? [What AAC is for](https://cascadeauth.
|
|
37
|
+
New to AAC? [What AAC is for](https://docs.cascadeauth.com/overview/#what-aac-is-for)
|
|
38
38
|
explains what delegated authority between agents buys you, and what it does not.
|
|
39
39
|
|
|
40
|
-
The [CLI user guide and complete command reference](https://cascadeauth.
|
|
40
|
+
The [CLI user guide and complete command reference](https://docs.cascadeauth.com/cli/)
|
|
41
41
|
cover developer and enterprise onboarding, everyday administration and recovery.
|
|
42
|
-
|
|
42
|
+
These pages describe the latest supported release. Upgrade the CLI to use the
|
|
43
|
+
documented commands, and check your installation with `aac --version`.
|
|
43
44
|
|
|
44
45
|
The `aac` command is how a tenant's operator does everything that is not
|
|
45
46
|
done by the sidecar itself: register the tenant, sign in, manage keys,
|
|
@@ -77,7 +78,7 @@ Python 3.11 to 3.14 is supported. Release checks test all four versions.
|
|
|
77
78
|
## Use `aeg` to view agent execution graphs
|
|
78
79
|
|
|
79
80
|
Installing or upgrading `aac-cli` supplies both `aac` and `aeg`.
|
|
80
|
-
Use the [AEG guide and command reference](https://cascadeauth.
|
|
81
|
+
Use the [AEG guide and command reference](https://docs.cascadeauth.com/aeg/)
|
|
81
82
|
for listing local and central observations, rendering evidence, and selecting a profile.
|
|
82
83
|
|
|
83
84
|
`aeg list --profile PROFILE --since 7d` discovers participant-visible central
|
|
@@ -111,7 +112,7 @@ Google developer sign-in. See “Setting up aac-cli on a new computer” below
|
|
|
111
112
|
for the existing-tenant sign-in and material preparation steps.
|
|
112
113
|
|
|
113
114
|
Setup uses the tenant's assigned trust domain and writes the files the
|
|
114
|
-
trust
|
|
115
|
+
trust anchor publisher and Docker Compose need, as well as the sidecar
|
|
115
116
|
configuration. By default it generates development keys and certificates;
|
|
116
117
|
the certificate choices below explain how to supply your own instead.
|
|
117
118
|
|
|
@@ -341,7 +342,7 @@ and destination maps allow at most 128 entries each.
|
|
|
341
342
|
| `destinations.<name>.audience_pattern` | Required exact registered SPIFFE identity; no wildcard. | None |
|
|
342
343
|
| `destinations.<name>.predicates`, `.valid_for` | Same value/duration contract as classes. | Empty predicates; duration required |
|
|
343
344
|
| `destinations.<name>.timeout_ms` | Integer 1–2147483647 without A2A; 1–60000 for every destination when A2A is enabled, matching its generated deadline. | `10000` |
|
|
344
|
-
| `a2a.public_base_url`, `a2a.local_handler_url` | Optional A2A block; both required if present. Public URL is HTTPS with no path except optional `/`; the HTTP(S) local handler path must be exactly `/a2a/v1`, with no escaped spelling. Neither URL permits query or fragment markers, even empty ones. Managed A2A state paths
|
|
345
|
+
| `a2a.public_base_url`, `a2a.local_handler_url` | Optional A2A block; both required if present. Public URL is HTTPS with no path except optional `/`; the HTTP(S) local handler path must be exactly `/a2a/v1`, with no escaped spelling. Neither URL permits query or fragment markers, even empty ones. Managed A2A state paths, a 60-second deadline and retry-state capacity are generated; the capacity holds the acknowledgement of the largest reply, which carries the peer's reply to your agent. No A2A self-route is added. | A2A disabled |
|
|
345
346
|
|
|
346
347
|
URL hosts are ASCII DNS names or IP addresses; URL fields reject whitespace,
|
|
347
348
|
backslashes, embedded credentials and fragments. Basic replay history
|
|
@@ -438,7 +439,7 @@ The laptop case. The CLI creates a certificate authority on this machine and sig
|
|
|
438
439
|
|
|
439
440
|
**Renewal.** `aac agent renew --agent <name>` issues fresh certificates from the same CA.
|
|
440
441
|
|
|
441
|
-
#### I bring my own CA
|
|
442
|
+
#### I bring my own CA certificate
|
|
442
443
|
|
|
443
444
|
Your own issuer has signed the agent's certificates, and your CA private key never reaches this machine. Certificate source alone does not qualify a production deployment.
|
|
444
445
|
|
|
@@ -507,7 +508,7 @@ name and `<tenant-id>` the tenant id AAC allocated.
|
|
|
507
508
|
For what each of these proves, who else ever gets a copy, what never leaves you
|
|
508
509
|
and how the pieces fit together — including when your own certificate authority
|
|
509
510
|
signs instead of this tool — see
|
|
510
|
-
[Keys and certificates](https://cascadeauth.
|
|
511
|
+
[Keys and certificates](https://docs.cascadeauth.com/overview/keys-and-certificates/).
|
|
511
512
|
|
|
512
513
|
<!-- inventory-table:start -->
|
|
513
514
|
| No. | Material | Where | Used for | Lifetime | Back up? |
|
|
@@ -902,7 +903,7 @@ are described by their `--help`.
|
|
|
902
903
|
### Keys
|
|
903
904
|
|
|
904
905
|
Replacing the tenant-admin key is immediate and forward-only: the previous
|
|
905
|
-
key stops verifying at once and can never be reinstated. The trust
|
|
906
|
+
key stops verifying at once and can never be reinstated. The trust anchor
|
|
906
907
|
publisher signs its uploads with this key and loads it once, at start, so
|
|
907
908
|
sequence the change: stop the publisher, register the new public half, put
|
|
908
909
|
the new private key where the publisher's configuration points, start the
|
|
@@ -32,7 +32,7 @@ build-backend = "setuptools.build_meta"
|
|
|
32
32
|
|
|
33
33
|
[project]
|
|
34
34
|
name = "aac-cli"
|
|
35
|
-
version = "0.2.
|
|
35
|
+
version = "0.2.9"
|
|
36
36
|
description = "The aac platform CLI — headless operator interface to the AAC control plane (tenant registration, chain audit)."
|
|
37
37
|
readme = "README.md"
|
|
38
38
|
requires-python = ">=3.11"
|
|
@@ -71,7 +71,7 @@ dependencies = [
|
|
|
71
71
|
]
|
|
72
72
|
|
|
73
73
|
[project.urls]
|
|
74
|
-
Documentation = "https://cascadeauth.
|
|
74
|
+
Documentation = "https://docs.cascadeauth.com/cli/"
|
|
75
75
|
|
|
76
76
|
[project.optional-dependencies]
|
|
77
77
|
test = [
|
|
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
|
|
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
|