@bnbagent/studio-cli 0.0.6-alpha.7 → 0.0.6-alpha.9
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.
- package/DISCLAIMER.md +6 -27
- package/README.md +6 -13
- package/dist/bag.js +965 -740
- package/dist/{chunk-VEOOFDSF.js → chunk-JZAW6HMV.js} +74 -5
- package/dist/{deployCli-EEK75T67.js → deployCli-AJ25A4VK.js} +1 -1
- package/package.json +2 -2
- package/recipes/providers/pieverse-llm/skills/funding-pieverse-llm.md +32 -64
- package/skills/bnbagent-studio.md +29 -74
- package/skills/references/bnbagent-studio-adding-to-project.md +58 -169
- package/skills/references/bnbagent-studio-buying-from-bazaar.md +43 -104
- package/skills/references/bnbagent-studio-buying-via-8183.md +38 -112
- package/skills/references/bnbagent-studio-extending-signing.md +47 -50
- package/skills/references/bnbagent-studio-operating.md +58 -110
- package/skills/references/bnbagent-studio-scaffolding-agent.md +134 -400
- package/skills/references/bnbagent-studio-selling-via-8183.md +87 -171
- package/skills/references/bnbagent-studio-selling-via-b402.md +39 -131
- package/skills/references/bnbagent-studio-use-aws-agentcore.md +43 -141
- package/skills/references/bnbagent-studio-use-azure-foundry.md +34 -95
- package/skills/references/bnbagent-studio-use-bnb-trial.md +12 -36
- package/skills/references/bnbagent-studio-using-altana-wallet.md +11 -28
- package/skills/references/bnbagent-studio-using-twak-wallet.md +102 -210
- package/skills/references/bnbagent-studio-wiring-llm-tools.md +71 -150
|
@@ -1,128 +1,76 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bnbagent-studio-use-azure-foundry
|
|
3
|
-
description: When the user wants to deploy or operate an A2A bnbagent-studio project on Azure AI Foundry Hosted Agents
|
|
3
|
+
description: When the user wants to deploy or operate an A2A bnbagent-studio project on Azure AI Foundry Hosted Agents - scaffold with `bag init --runtime azure-foundry --protocols A2A`, deploy with `bag deploy --provider azure` (container-only Invocations contract; all cloud lifecycle execution is delegated to pinned `@bnbagent/deploy-cli@0.4.14`, SDK/REST with browser login - no `az`/`azd` CLIs), and run lifecycle commands with `--provider azure` when multiple deployments exist. Native MCP deploy is not supported on Azure yet; use AgentCore for MCP.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Reference file** of the `bnbagent-studio` router skill
|
|
6
|
+
> **Reference file** of the `bnbagent-studio` router skill - installed at `bnbagent-studio/references/` and loaded on demand (not a standalone skill). Route here via the router's decision tree.
|
|
7
7
|
|
|
8
8
|
# bnbagent-studio-use-azure-foundry
|
|
9
9
|
|
|
10
|
-
> **Preview
|
|
10
|
+
> **Preview - not advertised in this release.** Azure Foundry support is fully wired but hidden from the `--runtime` menu and the deploy provider menu; these steps still work if you select `azure-foundry` / `--provider azure` explicitly. The most recent end-to-end live verification predates the TypeScript rewrite - treat your first deploy as a verification run.
|
|
11
11
|
|
|
12
|
-
Procedure for deploying and operating the seller Agent on **Azure AI
|
|
13
|
-
Foundry Hosted Agents** (`[stack].runtime = "azure-foundry"`). ALL cloud
|
|
14
|
-
execution — browser login, Foundry onboarding, the container registry image
|
|
15
|
-
build/push, secret provisioning, and the RBAC self-grant — is **delegated to
|
|
16
|
-
the pinned `@bnbagent/deploy-cli`** (run via `bunx --bun`; override with
|
|
17
|
-
`BNBAGENT_DEPLOY_COMMAND`), whose Azure provider is **SDK/REST-only**. Studio
|
|
18
|
-
never shells out to (or requires) the `az` / `azd` CLIs.
|
|
12
|
+
Procedure for deploying and operating the seller Agent on **Azure AI Foundry Hosted Agents** (`[stack].runtime = "azure-foundry"`). ALL cloud execution - browser login, Foundry onboarding, the container registry image build/push, secret provisioning, and the RBAC self-grant - is **delegated to the pinned `@bnbagent/deploy-cli`** (run via `bunx --bun`; override with `BNBAGENT_DEPLOY_COMMAND`), whose Azure provider is **SDK/REST-only**. Studio never shells out to (or requires) the `az` / `azd` CLIs.
|
|
19
13
|
|
|
20
14
|
```
|
|
21
15
|
<workspace>/
|
|
22
16
|
├── app/agent/ # the deployed code (src/foundryMain.ts host + Dockerfile here)
|
|
23
17
|
│ ├── studio.toml # [azure] block: location / account_name / subdomain / project_name / agent_endpoint
|
|
24
18
|
│ └── Dockerfile # the container image bnbagent-deploy builds + pushes
|
|
25
|
-
└── .studio/ # secrets + wallets (workspace root
|
|
19
|
+
└── .studio/ # secrets + wallets (workspace root - never in the image)
|
|
26
20
|
```
|
|
27
21
|
|
|
28
|
-
> **Deploy model: CONTAINER-ONLY.** The deploy-cli Azure provider rejects Node
|
|
29
|
-
> zip artifacts, so every azure-foundry deploy builds the scaffolded
|
|
30
|
-
> `app/agent/Dockerfile` **locally with Docker** (linux/amd64) and pushes it
|
|
31
|
-
> to the auto-provisioned Azure Container Registry; Foundry Agent Service
|
|
32
|
-
> pulls and runs the image. A running Docker daemon is required.
|
|
22
|
+
> **Deploy model: CONTAINER-ONLY.** The deploy-cli Azure provider rejects Node zip artifacts, so every azure-foundry deploy builds the scaffolded `app/agent/Dockerfile` **locally with Docker** (linux/amd64) and pushes it to the auto-provisioned Azure Container Registry; Foundry Agent Service pulls and runs the image. A running Docker daemon is required.
|
|
33
23
|
|
|
34
|
-
> **Protocol: A2A projects only for now.** The deployed Node host speaks
|
|
35
|
-
> Foundry's pass-through Invocations container contract on `:8088`
|
|
36
|
-
> (`GET /readiness`, `POST /invocations`). That endpoint is not native MCP
|
|
37
|
-
> streamable HTTP; `bag init` and provider selection reject azure-foundry +
|
|
38
|
-
> MCP instead of deploying a container that can never become ready.
|
|
24
|
+
> **Protocol: A2A projects only for now.** The deployed Node host speaks Foundry's pass-through Invocations container contract on `:8088` (`GET /readiness`, `POST /invocations`). That endpoint is not native MCP streamable HTTP; `bag init` and provider selection reject azure-foundry + MCP instead of deploying a container that can never become ready.
|
|
39
25
|
|
|
40
|
-
> **Auth is a browser login.** The first delegated run opens a browser to sign
|
|
41
|
-
> in to the right tenant/subscription — there is no `az login` / `azd auth
|
|
42
|
-
> login` step and no CLI to install.
|
|
26
|
+
> **Auth is a browser login.** The first delegated run opens a browser to sign in to the right tenant/subscription - there is no `az login` / `azd auth login` step and no CLI to install.
|
|
43
27
|
|
|
44
28
|
## Prerequisites
|
|
45
29
|
|
|
46
|
-
1. **Bun 1.3+ (`bunx`) on PATH**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
3. **An Azure subscription** the operator may provision in (Foundry
|
|
50
|
-
account/project, container registry, hosted agent); sign-in happens via
|
|
51
|
-
the browser at deploy time.
|
|
30
|
+
1. **Bun 1.3+ (`bunx`) on PATH** - the pinned `@bnbagent/deploy-cli` runs through it.
|
|
31
|
+
2. **Docker running** - the image is built locally (linux/amd64) before push.
|
|
32
|
+
3. **An Azure subscription** the operator may provision in (Foundry account/project, container registry, hosted agent); sign-in happens via the browser at deploy time.
|
|
52
33
|
|
|
53
34
|
## ⚠️ Foundry gotchas (read before deploying)
|
|
54
35
|
|
|
55
36
|
`bag deploy prepare --runtime azure-foundry` encodes these as checks, but know them:
|
|
56
37
|
|
|
57
|
-
- **Region must support Hosted Agents.** Default `eastus2`. `eastus` does NOT.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- **
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
subdomain, entrypoint + Dockerfile, an OpenAI-compatible `[llm]` provider,
|
|
71
|
-
twak readiness) without any cloud call; Azure auth happens at deploy time.
|
|
72
|
-
|
|
73
|
-
## Runtime secrets — the delegated hand-off
|
|
74
|
-
|
|
75
|
-
`bag deploy --provider azure` bundles the runtime secrets (provider/storage keys,
|
|
76
|
-
`WALLET_PASSWORD`, the encrypted keystore as `WALLET_KEYSTORE_JSON` — plus the
|
|
77
|
-
`BNBAGENT_LLM_*` wiring the Foundry host reads) and hands them to
|
|
78
|
-
bnbagent-deploy as a private (mode 0600) tempdir envFile; the deploy CLI
|
|
79
|
-
provisions them for the hosted agent as **Foundry CustomKeys**. No vault setup,
|
|
80
|
-
no role assignments, and no cloud CLI on your side.
|
|
81
|
-
|
|
82
|
-
> The encrypted keystore (`.studio/wallets/`) stays at the workspace root and
|
|
83
|
-
> rides only that secret channel — never baked into the image.
|
|
84
|
-
|
|
85
|
-
Provider-native overrides go in the optional `studio.toml [deploy.foundry]`
|
|
86
|
-
table (verbatim deploy-spec keys; deploy-cli 0.4.14 consumes `account`, `cpu`,
|
|
87
|
-
`location`, `memory`, `project`, `projectEndpoint`, `protocol`, `registry` and
|
|
88
|
-
warns about anything else). The `[azure]` block's `account_name` /
|
|
89
|
-
`project_name` / `project_endpoint` / `location` win over conflicting
|
|
90
|
-
`[deploy.foundry]` keys.
|
|
38
|
+
- **Region must support Hosted Agents.** Default `eastus2`. `eastus` does NOT. Prepare refuses an unsupported `[azure].location` (else deploy fails with `Unsupported region for Foundry Hosted Agents`).
|
|
39
|
+
- **Account name MUST equal the custom subdomain.** The runtime derives `https://{account_name}.services.ai.azure.com`; a mismatch resolves to NXDOMAIN and the agent returns HTTP 500. `bag init` sets them equal - keep them equal in `[azure]`.
|
|
40
|
+
- **Empty `APPLICATIONINSIGHTS_CONNECTION_STRING` crashes the exporter.** The emitted entrypoint drops it when blank - don't remove that guard.
|
|
41
|
+
- **The hosted container contract is fixed.** Keep `AGENT_PORT=8088`, `GET /readiness` returning HTTP 200, and `POST /invocations`. Local A2A still runs on `:9000`; do not copy that local port into the Foundry Dockerfile.
|
|
42
|
+
- **Prepare checks are local-only.** They validate the scaffold (region, subdomain, entrypoint + Dockerfile, an OpenAI-compatible `[llm]` provider, twak readiness) without any cloud call; Azure auth happens at deploy time.
|
|
43
|
+
|
|
44
|
+
## Runtime secrets - the delegated hand-off
|
|
45
|
+
|
|
46
|
+
`bag deploy --provider azure` bundles the runtime secrets (provider/storage keys, `WALLET_PASSWORD`, the encrypted keystore as `WALLET_KEYSTORE_JSON` - plus the `BNBAGENT_LLM_*` wiring the Foundry host reads) and hands them to bnbagent-deploy as a private (mode 0600) tempdir envFile; the deploy CLI provisions them for the hosted agent as **Foundry CustomKeys**. No vault setup, no role assignments, and no cloud CLI on your side.
|
|
47
|
+
|
|
48
|
+
> The encrypted keystore (`.studio/wallets/`) stays at the workspace root and rides only that secret channel - never baked into the image.
|
|
49
|
+
|
|
50
|
+
Provider-native overrides go in the optional `studio.toml [deploy.foundry]` table (verbatim deploy-spec keys; deploy-cli 0.4.14 consumes `account`, `cpu`, `location`, `memory`, `project`, `projectEndpoint`, `protocol`, `registry` and warns about anything else). The `[azure]` block's `account_name` / `project_name` / `project_endpoint` / `location` win over conflicting `[deploy.foundry]` keys.
|
|
91
51
|
|
|
92
52
|
## Typical workflow
|
|
93
53
|
|
|
94
54
|
### A. Scaffold
|
|
95
55
|
|
|
96
56
|
```bash
|
|
97
|
-
bag init
|
|
57
|
+
bag init myagent --runtime azure-foundry
|
|
98
58
|
```
|
|
99
59
|
|
|
100
60
|
`bag init` makes no Azure calls; all cloud onboarding happens at deploy time.
|
|
101
61
|
|
|
102
62
|
### B. Deploy
|
|
103
63
|
|
|
104
|
-
> **Preview, live E2E verified 2026-07-20.** The A2A azure-foundry path was
|
|
105
|
-
> verified through container build/push, CustomKeys wallet injection, hosted
|
|
106
|
-
> agent create/update, cold-start smoke, status, invoke, logs, a signed
|
|
107
|
-
> `negotiate`, and destroy. Foundry itself remains a preview service.
|
|
64
|
+
> **Preview, live E2E verified 2026-07-20.** The A2A azure-foundry path was verified through container build/push, CustomKeys wallet injection, hosted agent create/update, cold-start smoke, status, invoke, logs, a signed `negotiate`, and destroy. Foundry itself remains a preview service.
|
|
108
65
|
|
|
109
|
-
> ⚠️ **First deploy: relay the Azure-resource notice to the user.** `bag deploy
|
|
110
|
-
> --provider azure` prints a notice that the delegated deploy CREATES billable Azure
|
|
111
|
-
> resources (Foundry account/project, container registry, hosted agent
|
|
112
|
-
> container) under the signed-in subscription. Show it, get consent, then
|
|
113
|
-
> deploy.
|
|
66
|
+
> ⚠️ **First deploy: relay the Azure-resource notice to the user.** `bag deploy --provider azure` prints a notice that the delegated deploy CREATES billable Azure resources (Foundry account/project, container registry, hosted agent container) under the signed-in subscription. Show it, get consent, then deploy.
|
|
114
67
|
|
|
115
68
|
```bash
|
|
116
69
|
bag deploy prepare --runtime azure-foundry # local readiness gate (region/subdomain/Dockerfile)
|
|
117
70
|
bag deploy --provider azure # delegated: login → onboard → build+push → CustomKeys → deploy [--smoke]
|
|
118
71
|
```
|
|
119
72
|
|
|
120
|
-
`bag deploy --provider azure` runs an HTTP contract smoke by default (pass
|
|
121
|
-
`--skip-smoke` to omit it) and captures the Foundry endpoint into
|
|
122
|
-
`app/agent/studio.toml [azure].agent_endpoint`. If Foundry creates the resource
|
|
123
|
-
but that post-create check fails, Studio still records the discovered endpoint
|
|
124
|
-
so `status`, `logs`, and `destroy` can manage the resource; the deploy command
|
|
125
|
-
continues to return non-zero.
|
|
73
|
+
`bag deploy --provider azure` runs an HTTP contract smoke by default (pass `--skip-smoke` to omit it) and captures the Foundry endpoint into `app/agent/studio.toml [azure].agent_endpoint`. If Foundry creates the resource but that post-create check fails, Studio still records the discovered endpoint so `status`, `logs`, and `destroy` can manage the resource; the deploy command continues to return non-zero.
|
|
126
74
|
|
|
127
75
|
### C. Validate / operate
|
|
128
76
|
|
|
@@ -131,10 +79,7 @@ bag deploy status # all recorded providers + live sta
|
|
|
131
79
|
bag deploy logs --provider azure --limit 50 # delegated Hosted Agent logs
|
|
132
80
|
```
|
|
133
81
|
|
|
134
|
-
The built-in smoke proves the container contract, not the seller signature.
|
|
135
|
-
For a release E2E, invoke with a complete `negotiate` envelope and require
|
|
136
|
-
`response.accepted=true`, a non-empty `negotiation_hash`, and `provider_sig`.
|
|
137
|
-
The Invocations body is `{"input":"<serialized skill JSON>"}`.
|
|
82
|
+
The built-in smoke proves the container contract, not the seller signature. For a release E2E, invoke with a complete `negotiate` envelope and require `response.accepted=true`, a non-empty `negotiation_hash`, and `provider_sig`. The Invocations body is `{"input":"<serialized skill JSON>"}`.
|
|
138
83
|
|
|
139
84
|
### D. Tear down
|
|
140
85
|
|
|
@@ -144,21 +89,15 @@ bag deploy destroy --provider azure --execute # delegates `destroy --yes`
|
|
|
144
89
|
bag deploy destroy --provider azure --execute --purge # retained resources too
|
|
145
90
|
```
|
|
146
91
|
|
|
147
|
-
`--purge` also removes the retained resources the deploy record tracks
|
|
148
|
-
including the soft-deleted Cognitive Services account, freeing the custom
|
|
149
|
-
subdomain immediately (otherwise held ~48h). A successful teardown clears the
|
|
150
|
-
recorded `[azure].agent_endpoint`.
|
|
92
|
+
`--purge` also removes the retained resources the deploy record tracks - including the soft-deleted Cognitive Services account, freeing the custom subdomain immediately (otherwise held ~48h). A successful teardown clears the recorded `[azure].agent_endpoint`.
|
|
151
93
|
|
|
152
94
|
## Scope note
|
|
153
95
|
|
|
154
|
-
Azure Foundry is an alternate runtime for the whole seller agent. There is no
|
|
155
|
-
separate keyless Layer B service to keep in sync; ERC-8183 seller delivery still
|
|
156
|
-
runs through the single signer runtime selected in `studio.toml [stack].runtime`.
|
|
96
|
+
Azure Foundry is an alternate runtime for the whole seller agent. There is no separate keyless Layer B service to keep in sync; ERC-8183 seller delivery still runs through the single signer runtime selected in `studio.toml [stack].runtime`.
|
|
157
97
|
|
|
158
98
|
## Reference
|
|
159
99
|
|
|
160
100
|
- `bag deploy --help` / `bag deploy <command> --help` (authoritative for commands + flags)
|
|
161
|
-
- `app/agent/studio.toml [azure]`
|
|
162
|
-
|
|
163
|
-
- `
|
|
164
|
-
- `BNBAGENT_DEPLOY_COMMAND` — override the pinned `bunx --bun @bnbagent/deploy-cli@<pin>` invocation (E2E/dev)
|
|
101
|
+
- `app/agent/studio.toml [azure]` - location / account_name / subdomain / project_name / agent_endpoint
|
|
102
|
+
- `app/agent/studio.toml [deploy.foundry]` - provider-native deploy-spec passthrough
|
|
103
|
+
- `BNBAGENT_DEPLOY_COMMAND` - override the pinned `bunx --bun @bnbagent/deploy-cli@<pin>` invocation (E2E/dev)
|
|
@@ -3,18 +3,13 @@ name: bnbagent-studio-use-bnb-trial
|
|
|
3
3
|
description: Use when deploying or operating a bnbagent-studio seller on the BNB Chain managed 48h testnet trial, including GitHub device login, trial eligibility/expiry, staging verification, status, logs, verify, and destroy.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **Reference file** of the `bnbagent-studio` router skill. Load it only for
|
|
7
|
-
> provider `bnb` deployment work.
|
|
6
|
+
> **Reference file** of the `bnbagent-studio` router skill. Load it only for provider `bnb` deployment work.
|
|
8
7
|
|
|
9
8
|
# Use the BNB Chain 48h trial
|
|
10
9
|
|
|
11
|
-
Treat this provider as a temporary testnet sandbox. Require a throwaway wallet,
|
|
12
|
-
keep `bsc-testnet`, and explain that the runtime signing material is transmitted
|
|
13
|
-
to the operator's managed secret store for the trial. Never use a mainnet key.
|
|
10
|
+
Treat this provider as a temporary testnet sandbox. Require a throwaway wallet, keep `bsc-testnet`, and explain that the runtime signing material is transmitted to the operator's managed secret store for the trial. Never use a mainnet key.
|
|
14
11
|
|
|
15
|
-
All auth and cloud lifecycle work must cross the pinned
|
|
16
|
-
`@bnbagent/deploy-cli@0.4.14` boundary. Do not call the AWS CLI or platform
|
|
17
|
-
REST routes directly.
|
|
12
|
+
All auth and cloud lifecycle work must cross the pinned `@bnbagent/deploy-cli@0.4.14` boundary. Do not call the AWS CLI or platform REST routes directly.
|
|
18
13
|
|
|
19
14
|
## Select and authenticate
|
|
20
15
|
|
|
@@ -26,27 +21,18 @@ bag platform credit
|
|
|
26
21
|
bag deploy --provider bnb
|
|
27
22
|
```
|
|
28
23
|
|
|
29
|
-
`bag platform login` must print the GitHub verification URL and device code. It
|
|
30
|
-
must not open a browser. Give both values to the user and wait for them to
|
|
31
|
-
complete verification.
|
|
24
|
+
`bag platform login` must print the GitHub verification URL and device code. It must not open a browser. Give both values to the user and wait for them to complete verification.
|
|
32
25
|
|
|
33
26
|
Before offering BNB, inspect the trial result:
|
|
34
27
|
|
|
35
28
|
- `available`: selectable; explain that the 48h clock starts on first success.
|
|
36
29
|
- `active`: selectable; show remaining time and expiry immediately.
|
|
37
|
-
- `expired`: show the row and expiry, but mark it unavailable and do not select
|
|
38
|
-
|
|
39
|
-
project scaffold.
|
|
40
|
-
- unknown/auth required: explain that eligibility cannot be confirmed until
|
|
41
|
-
login; the delegated deploy rechecks before building.
|
|
30
|
+
- `expired`: show the row and expiry, but mark it unavailable and do not select it. AWS remains independently available when compatible with the project scaffold.
|
|
31
|
+
- unknown/auth required: explain that eligibility cannot be confirmed until login; the delegated deploy rechecks before building.
|
|
42
32
|
|
|
43
|
-
Every deploy/redeploy uses scheme C. Never silently reuse `[deploy].destination`
|
|
44
|
-
or the last provider. A sole active BNB record may produce an explicit “update
|
|
45
|
-
BNB” action. Switching to another compatible provider creates a coexisting
|
|
46
|
-
deployment; it does not destroy BNB automatically.
|
|
33
|
+
Every deploy/redeploy uses scheme C. Never silently reuse `[deploy].destination` or the last provider. A sole active BNB record may produce an explicit “update BNB” action. Switching to another compatible provider creates a coexisting deployment; it does not destroy BNB automatically.
|
|
47
34
|
|
|
48
|
-
Automation requires `--provider bnb --yes`. When another provider remains
|
|
49
|
-
active, also require `--allow-multiple`.
|
|
35
|
+
Automation requires `--provider bnb --yes`. When another provider remains active, also require `--allow-multiple`.
|
|
50
36
|
|
|
51
37
|
## Operate
|
|
52
38
|
|
|
@@ -58,13 +44,9 @@ bag deploy destroy --provider bnb # dry-run
|
|
|
58
44
|
bag deploy destroy --provider bnb --execute # destructive confirmation
|
|
59
45
|
```
|
|
60
46
|
|
|
61
|
-
`status` lists every recorded provider and includes the live trial countdown.
|
|
62
|
-
Use `--no-probe` only when local records are desired. With multiple deployments,
|
|
63
|
-
logs/verify/destroy must select a provider interactively or pass `--provider`.
|
|
47
|
+
`status` lists every recorded provider and includes the live trial countdown. Use `--no-probe` only when local records are desired. With multiple deployments, logs/verify/destroy must select a provider interactively or pass `--provider`.
|
|
64
48
|
|
|
65
|
-
Destroy clears only the BNB lifecycle record after the delegated delete
|
|
66
|
-
succeeds. It does not delete the local keystore or the on-chain ERC-8004
|
|
67
|
-
identity. Destroyed BNB slugs are retired; choose a fresh slug before redeploy.
|
|
49
|
+
Destroy clears only the BNB lifecycle record after the delegated delete succeeds. It does not delete the local keystore or the on-chain ERC-8004 identity. Destroyed BNB slugs are retired; choose a fresh slug before redeploy.
|
|
68
50
|
|
|
69
51
|
## Manual staging verification
|
|
70
52
|
|
|
@@ -81,12 +63,6 @@ bag deploy verify --provider bnb --skip-register
|
|
|
81
63
|
bag deploy destroy --provider bnb
|
|
82
64
|
```
|
|
83
65
|
|
|
84
|
-
Do not execute the final destructive step until the user explicitly approves
|
|
85
|
-
`bag deploy destroy --provider bnb --execute`. For headless verification, use
|
|
86
|
-
`BNBAGENT_API_TOKEN`, `BNBAGENT_API_URL`, `--provider bnb`, and `--yes`.
|
|
66
|
+
Do not execute the final destructive step until the user explicitly approves `bag deploy destroy --provider bnb --execute`. For headless verification, use `BNBAGENT_API_TOKEN`, `BNBAGENT_API_URL`, `--provider bnb`, and `--yes`.
|
|
87
67
|
|
|
88
|
-
Treat both artifact channels as required release coverage. The 2026-07-20
|
|
89
|
-
staging baseline passed ZIP and linux/arm64 container through deploy, status,
|
|
90
|
-
OAuth-authenticated signed A2A negotiation, logs, and destroy. Do not infer
|
|
91
|
-
funded delivery or durable-storage coverage from that smoke; those require the
|
|
92
|
-
separate commerce flow in `docs/guides/verification.md`.
|
|
68
|
+
Treat both artifact channels as required release coverage. The 2026-07-20 staging baseline passed ZIP and linux/arm64 container through deploy, status, OAuth-authenticated signed A2A negotiation, logs, and destroy. Do not infer funded delivery or durable-storage coverage from that smoke; those require the separate commerce flow in `docs/guides/verification.md`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bnbagent-studio-using-altana-wallet
|
|
3
|
-
description: Use when a bnbagent-studio project selects wallet.kind = "altana" and needs the encrypted admin keystore, bounded runtime session lifecycle, ERC-8183 quote checker, x402 allowance, local dev, or deployment
|
|
3
|
+
description: Use when a bnbagent-studio project selects wallet.kind = "altana" and needs the encrypted admin keystore, bounded runtime session lifecycle, ERC-8183 quote checker, x402 allowance, local dev, or session-only deployment and renewal.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Using the Altana wallet
|
|
@@ -8,17 +8,11 @@ description: Use when a bnbagent-studio project selects wallet.kind = "altana" a
|
|
|
8
8
|
Altana separates trusted administration from runtime authority:
|
|
9
9
|
|
|
10
10
|
- `.studio/wallets/<address>.json` is the encrypted admin keystore.
|
|
11
|
-
- `.studio/wallets/altana-session.json` is the one bounded, expiring runtime
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
approved quote checker.
|
|
17
|
-
- Deployment is deferred; `bag deploy --provider <provider>` hard-blocks before side effects.
|
|
18
|
-
- Altana refuses generic message signing, so Pieverse SIWE cannot authenticate
|
|
19
|
-
either `bag llm activate` or runtime credit renewal. An existing Pieverse key
|
|
20
|
-
is usable only with `auto/free`; use OpenRouter, OpenAI, or Anthropic for paid
|
|
21
|
-
models.
|
|
11
|
+
- `.studio/wallets/altana-session.json` is the one bounded, expiring runtime session and must stay mode `0600`.
|
|
12
|
+
- `WALLET_PASSWORD` is admin-only. The Agent gets `ALTANA_SESSION`, never the password or admin keystore.
|
|
13
|
+
- Generic signing is refused. ERC-8183 uses `sessionQuoteSigner()` and the approved quote checker.
|
|
14
|
+
- Deployment ships ONLY the serialized session as the `ALTANA_SESSION` runtime secret; the admin keystore and `WALLET_PASSWORD` never leave the operator machine. Renewal after expiry: `bag wallet session grant --force`, then re-run `bag deploy` (readiness warns under 7 days remaining). `bag deploy verify` needs `--skip-register` (no generic signing for the ERC-8004 register).
|
|
15
|
+
- Altana refuses generic message signing, so Pieverse SIWE cannot authenticate `bag llm activate` or runtime credit renewal. `bag init --wallet-kind altana --llm-provider pieverse-llm` is rejected outright; use OpenRouter, OpenAI, or Anthropic (API-key providers). `bag llm activate` and `bag doctor` also flag the combination on projects edited by hand.
|
|
22
16
|
|
|
23
17
|
## Procedure
|
|
24
18
|
|
|
@@ -37,20 +31,15 @@ bag doctor
|
|
|
37
31
|
bag dev
|
|
38
32
|
```
|
|
39
33
|
|
|
40
|
-
Interactive grant recommendations are 10 U/day, 30 days, register=yes. In a
|
|
41
|
-
non-TTY, pass `--budget-u`, `--expiry-days`, optional `--no-register`, and
|
|
42
|
-
`--yes`. Stdout from a successful grant is only the session public key.
|
|
34
|
+
Interactive grant recommendations are 10 U/day, 30 days, register=yes. In a non-TTY, pass `--budget-u`, `--expiry-days`, optional `--no-register`, and `--yes`. Stdout from a successful grant is only the session public key.
|
|
43
35
|
|
|
44
|
-
If quote-checker approval fails after the paid grant, the owner-only session
|
|
45
|
-
file is preserved. Repair it with:
|
|
36
|
+
If quote-checker approval fails after the paid grant, the owner-only session file is preserved. Repair it with:
|
|
46
37
|
|
|
47
38
|
```bash
|
|
48
39
|
bag wallet session grant --approve-only
|
|
49
40
|
```
|
|
50
41
|
|
|
51
|
-
Replace with `grant --force`; the old on-chain revoke must succeed before the
|
|
52
|
-
new grant begins. Revoke with `bag wallet session revoke --yes`; the file is
|
|
53
|
-
deleted only after chain success.
|
|
42
|
+
Replace with `grant --force`; the old on-chain revoke must succeed before the new grant begins. Revoke with `bag wallet session revoke --yes`; the file is deleted only after chain success.
|
|
54
43
|
|
|
55
44
|
x402 buying remains separate and exact-bounded:
|
|
56
45
|
|
|
@@ -58,12 +47,6 @@ x402 buying remains separate and exact-bounded:
|
|
|
58
47
|
bag wallet session x402-setup --allowance-u <U> --yes
|
|
59
48
|
```
|
|
60
49
|
|
|
61
|
-
Altana cannot be the b402 **seller** payout wallet for a positive price (paid
|
|
62
|
-
mode allows `evm-local` and `twak` only); init, `bag x402 sell init`, and
|
|
63
|
-
deploy readiness reject that paid combination. Explicit
|
|
64
|
-
`price_usd = "0"` is allowed because FREE passthrough performs no payout and
|
|
65
|
-
bypasses B402. The outbound buying authority above remains a separate feature.
|
|
50
|
+
Altana cannot be the b402 **seller** payout wallet for a positive price (paid mode allows `evm-local` and `twak` only); init, `bag x402 sell init`, and deploy readiness reject that paid combination. Explicit `price_usd = "0"` is allowed because FREE passthrough performs no payout and bypasses B402. The outbound buying authority above remains a separate feature.
|
|
66
51
|
|
|
67
|
-
For troubleshooting, run `bag doctor` and `bag wallet session status`. Do not
|
|
68
|
-
print, parse, or copy the `signer` portion of the serialized session, and never
|
|
69
|
-
move `.studio/wallets/` under `app/agent/`.
|
|
52
|
+
For troubleshooting, run `bag doctor` and `bag wallet session status`. Do not print, parse, or copy the `signer` portion of the serialized session, and never move `.studio/wallets/` under `app/agent/`.
|