tenzro-sdk 0.1.0 → 0.3.0

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 (172) hide show
  1. package/LICENSE +4 -15
  2. package/README.md +197 -4
  3. package/dist/adaptive-burn.d.ts +40 -0
  4. package/dist/adaptive-burn.d.ts.map +1 -0
  5. package/dist/adaptive-burn.js +53 -0
  6. package/dist/adaptive-burn.js.map +1 -0
  7. package/dist/agent.d.ts +127 -12
  8. package/dist/agent.d.ts.map +1 -1
  9. package/dist/agent.js +176 -15
  10. package/dist/agent.js.map +1 -1
  11. package/dist/ap2.d.ts +96 -0
  12. package/dist/ap2.d.ts.map +1 -1
  13. package/dist/ap2.js +65 -0
  14. package/dist/ap2.js.map +1 -1
  15. package/dist/app.js +5 -5
  16. package/dist/app.js.map +1 -1
  17. package/dist/auth.d.ts +394 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +237 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/bond.d.ts +70 -0
  22. package/dist/bond.d.ts.map +1 -0
  23. package/dist/bond.js +172 -0
  24. package/dist/bond.js.map +1 -0
  25. package/dist/cct.d.ts +53 -0
  26. package/dist/cct.d.ts.map +1 -0
  27. package/dist/cct.js +30 -0
  28. package/dist/cct.js.map +1 -0
  29. package/dist/client.d.ts +215 -2
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +295 -12
  32. package/dist/client.js.map +1 -1
  33. package/dist/cortex.d.ts +227 -0
  34. package/dist/cortex.d.ts.map +1 -0
  35. package/dist/cortex.js +137 -0
  36. package/dist/cortex.js.map +1 -0
  37. package/dist/custody.d.ts +251 -0
  38. package/dist/custody.d.ts.map +1 -1
  39. package/dist/custody.js +216 -0
  40. package/dist/custody.js.map +1 -1
  41. package/dist/eip6963.d.ts +63 -0
  42. package/dist/eip6963.d.ts.map +1 -0
  43. package/dist/eip6963.js +67 -0
  44. package/dist/eip6963.js.map +1 -0
  45. package/dist/eip7702.d.ts +110 -0
  46. package/dist/eip7702.d.ts.map +1 -0
  47. package/dist/eip7702.js +73 -0
  48. package/dist/eip7702.js.map +1 -0
  49. package/dist/erc7683.d.ts +79 -0
  50. package/dist/erc7683.d.ts.map +1 -0
  51. package/dist/erc7683.js +82 -0
  52. package/dist/erc7683.js.map +1 -0
  53. package/dist/erc8004.d.ts +97 -0
  54. package/dist/erc8004.d.ts.map +1 -0
  55. package/dist/erc8004.js +182 -0
  56. package/dist/erc8004.js.map +1 -0
  57. package/dist/events.d.ts +45 -15
  58. package/dist/events.d.ts.map +1 -1
  59. package/dist/events.js +38 -8
  60. package/dist/events.js.map +1 -1
  61. package/dist/identity.d.ts +16 -2
  62. package/dist/identity.d.ts.map +1 -1
  63. package/dist/identity.js +19 -1
  64. package/dist/identity.js.map +1 -1
  65. package/dist/index.d.ts +52 -6
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +83 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/insurance.d.ts +38 -0
  70. package/dist/insurance.d.ts.map +1 -0
  71. package/dist/insurance.js +51 -0
  72. package/dist/insurance.js.map +1 -0
  73. package/dist/iroh.d.ts +104 -0
  74. package/dist/iroh.d.ts.map +1 -0
  75. package/dist/iroh.js +102 -0
  76. package/dist/iroh.js.map +1 -0
  77. package/dist/lifecycle.d.ts +41 -0
  78. package/dist/lifecycle.d.ts.map +1 -0
  79. package/dist/lifecycle.js +56 -0
  80. package/dist/lifecycle.js.map +1 -0
  81. package/dist/marketplace.d.ts +30 -2
  82. package/dist/marketplace.d.ts.map +1 -1
  83. package/dist/marketplace.js +36 -2
  84. package/dist/marketplace.js.map +1 -1
  85. package/dist/memory.d.ts +78 -0
  86. package/dist/memory.d.ts.map +1 -0
  87. package/dist/memory.js +60 -0
  88. package/dist/memory.js.map +1 -0
  89. package/dist/multimodal.d.ts +294 -0
  90. package/dist/multimodal.d.ts.map +1 -0
  91. package/dist/multimodal.js +160 -0
  92. package/dist/multimodal.js.map +1 -0
  93. package/dist/passkey.d.ts +193 -0
  94. package/dist/passkey.d.ts.map +1 -0
  95. package/dist/passkey.js +481 -0
  96. package/dist/passkey.js.map +1 -0
  97. package/dist/payment.d.ts +14 -1
  98. package/dist/payment.d.ts.map +1 -1
  99. package/dist/payment.js +15 -0
  100. package/dist/payment.js.map +1 -1
  101. package/dist/principal-chain.d.ts +41 -0
  102. package/dist/principal-chain.d.ts.map +1 -0
  103. package/dist/principal-chain.js +56 -0
  104. package/dist/principal-chain.js.map +1 -0
  105. package/dist/provider.d.ts +7 -6
  106. package/dist/provider.d.ts.map +1 -1
  107. package/dist/provider.js +9 -6
  108. package/dist/provider.js.map +1 -1
  109. package/dist/quota.d.ts +54 -0
  110. package/dist/quota.d.ts.map +1 -0
  111. package/dist/quota.js +71 -0
  112. package/dist/quota.js.map +1 -0
  113. package/dist/rpc.d.ts +43 -4
  114. package/dist/rpc.d.ts.map +1 -1
  115. package/dist/rpc.js +110 -3
  116. package/dist/rpc.js.map +1 -1
  117. package/dist/seed-agent.d.ts +52 -0
  118. package/dist/seed-agent.d.ts.map +1 -0
  119. package/dist/seed-agent.js +69 -0
  120. package/dist/seed-agent.js.map +1 -0
  121. package/dist/settlement.d.ts +69 -10
  122. package/dist/settlement.d.ts.map +1 -1
  123. package/dist/settlement.js +220 -16
  124. package/dist/settlement.js.map +1 -1
  125. package/dist/signer.d.ts +181 -0
  126. package/dist/signer.d.ts.map +1 -0
  127. package/dist/signer.js +69 -0
  128. package/dist/signer.js.map +1 -0
  129. package/dist/sla.d.ts +95 -0
  130. package/dist/sla.d.ts.map +1 -0
  131. package/dist/sla.js +70 -0
  132. package/dist/sla.js.map +1 -0
  133. package/dist/snapshot.d.ts +122 -0
  134. package/dist/snapshot.d.ts.map +1 -0
  135. package/dist/snapshot.js +80 -0
  136. package/dist/snapshot.js.map +1 -0
  137. package/dist/staking.d.ts +5 -5
  138. package/dist/staking.d.ts.map +1 -1
  139. package/dist/staking.js +8 -6
  140. package/dist/staking.js.map +1 -1
  141. package/dist/streaming.js.map +1 -1
  142. package/dist/svm-cross-vm.d.ts +109 -0
  143. package/dist/svm-cross-vm.d.ts.map +1 -0
  144. package/dist/svm-cross-vm.js +215 -0
  145. package/dist/svm-cross-vm.js.map +1 -0
  146. package/dist/task.d.ts +56 -22
  147. package/dist/task.d.ts.map +1 -1
  148. package/dist/task.js +65 -31
  149. package/dist/task.js.map +1 -1
  150. package/dist/token.d.ts +41 -11
  151. package/dist/token.d.ts.map +1 -1
  152. package/dist/token.js.map +1 -1
  153. package/dist/training.d.ts +108 -0
  154. package/dist/training.d.ts.map +1 -0
  155. package/dist/training.js +53 -0
  156. package/dist/training.js.map +1 -0
  157. package/dist/types.d.ts +247 -17
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/types.js.map +1 -1
  160. package/dist/validator.d.ts +76 -0
  161. package/dist/validator.d.ts.map +1 -0
  162. package/dist/validator.js +47 -0
  163. package/dist/validator.js.map +1 -0
  164. package/dist/wallet.d.ts +26 -9
  165. package/dist/wallet.d.ts.map +1 -1
  166. package/dist/wallet.js +34 -19
  167. package/dist/wallet.js.map +1 -1
  168. package/dist/wormhole.d.ts +76 -0
  169. package/dist/wormhole.d.ts.map +1 -0
  170. package/dist/wormhole.js +56 -0
  171. package/dist/wormhole.js.map +1 -0
  172. package/package.json +3 -2
package/LICENSE CHANGED
@@ -48,7 +48,7 @@
48
48
  "Contribution" shall mean any work of authorship, including
49
49
  the original version of the Work and any modifications or additions
50
50
  to that Work or Derivative Works thereof, that is intentionally
51
- submitted to Licensor for inclusion in the Work by the copyright owner
51
+ submitted to the Licensor for inclusion in the Work by the copyright owner
52
52
  or by an individual or Legal Entity authorized to submit on behalf of
53
53
  the copyright owner. For the purposes of this definition, "submitted"
54
54
  means any form of electronic, verbal, or written communication sent
@@ -60,7 +60,7 @@
60
60
  designated in writing by the copyright owner as "Not a Contribution."
61
61
 
62
62
  "Contributor" shall mean Licensor and any individual or Legal Entity
63
- on behalf of whom a Contribution has been received by Licensor and
63
+ on behalf of whom a Contribution has been received by the Licensor and
64
64
  subsequently incorporated within the Work.
65
65
 
66
66
  2. Grant of Copyright License. Subject to the terms and conditions of
@@ -106,7 +106,7 @@
106
106
  (d) If the Work includes a "NOTICE" text file as part of its
107
107
  distribution, then any Derivative Works that You distribute must
108
108
  include a readable copy of the attribution notices contained
109
- within such NOTICE file, excluding those notices that do not
109
+ within such NOTICE file, excluding any notices that do not
110
110
  pertain to any part of the Derivative Works, in at least one
111
111
  of the following places: within a NOTICE text file distributed
112
112
  as part of the Derivative Works; within the Source form or
@@ -175,18 +175,7 @@
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
177
 
178
- APPENDIX: How to apply the Apache License to your work.
179
-
180
- To apply the Apache License to your work, attach the following
181
- boilerplate notice, with the fields enclosed by brackets "[]"
182
- replaced with your own identifying information. (Don't include
183
- the brackets!) The text should be enclosed in the appropriate
184
- comment syntax for the file format. We also recommend that a
185
- file or class name and description of purpose be included on the
186
- same "printed page" as the copyright notice for easier
187
- identification within third-party archives.
188
-
189
- Copyright [yyyy] [name of copyright owner]
178
+ Copyright 2026 Tenzro Network Contributors
190
179
 
191
180
  Licensed under the Apache License, Version 2.0 (the "License");
192
181
  you may not use this file except in compliance with the License.
package/README.md CHANGED
@@ -36,6 +36,126 @@ const result = await client.inference.request('gemma3-270m', 'Hello!', 100);
36
36
  console.log(result.output);
37
37
  ```
38
38
 
39
+ ## Browser-extension provider
40
+
41
+ Browser dApps can route SDK calls through `window.tenzro` (any
42
+ EIP-6963-announcing Tenzro extension) instead of opening a direct
43
+ fetch to the node. The extension owns auth (DPoP-bound JWT), session
44
+ management (CAIP-25), and user confirmation:
45
+
46
+ ```typescript
47
+ import { TenzroClient, TenzroNotInstalledError } from 'tenzro-sdk';
48
+
49
+ try {
50
+ const client = await TenzroClient.fromInjected();
51
+ const block = await client.getLatestBlock();
52
+ } catch (err) {
53
+ if (err instanceof TenzroNotInstalledError) {
54
+ showInstallCta();
55
+ } else {
56
+ throw err;
57
+ }
58
+ }
59
+ ```
60
+
61
+ `fromInjected()` discovers the Tenzro provider via EIP-6963
62
+ (default `rdns: network.tenzro.wallet`, override with the `rdns`
63
+ option), wraps it in an `Eip1193Transport`, and returns a
64
+ `TenzroClient` whose `rpc.call(...)` becomes `provider.request(...)`.
65
+ No extra dependency to install — the EIP-6963 listener is bundled in
66
+ the SDK. Node consumers can ignore this entrypoint entirely.
67
+
68
+ ## Catch-up sync
69
+
70
+ A node lagging behind the network can pull batches of historical blocks via
71
+ `getBlockRange`. The call returns up to 256 blocks per request along with a
72
+ `nextHeight` + `moreAvailable` cursor so a sync loop steps over pruning gaps:
73
+
74
+ ```typescript
75
+ let cur = 0;
76
+ while (true) {
77
+ const r = await client.getBlockRange(cur, cur + 255, 256);
78
+ for (const b of r.blocks) { /* import block */ }
79
+ if (!r.moreAvailable) break;
80
+ cur = r.nextHeight;
81
+ }
82
+ ```
83
+
84
+ `isSyncing()` reports the live gap by comparing the local tip against
85
+ peer-reported network tips (gossiped on `tenzro/status`); pair it with
86
+ `getBlockRange` to drive a catch-up loop only when needed.
87
+
88
+ ## Transaction signing
89
+
90
+ Every Tenzro transaction is hybrid post-quantum signed: a classical Ed25519
91
+ signature **and** an ML-DSA-65 (FIPS 204) signature, both verified
92
+ synchronously by the node against the canonical `Transaction::hash()`
93
+ preimage (which commits to the PQ public key). An invalid or missing
94
+ signature on either leg returns JSON-RPC error `-32003`.
95
+
96
+ Two supported flows:
97
+
98
+ 1. **Atomic server-side sign + send (recommended).** The SDK dispatches
99
+ the request via `tenzro_signAndSendTransaction`. The node identifies
100
+ the signing wallet from the ambient DPoP-bound bearer JWT, looks up
101
+ the live nonce and gas price, constructs the hash preimage, signs
102
+ both legs, verifies them, and submits to the mempool — all in one
103
+ call. Private keys never travel over the wire. `nonce`, `chainId`,
104
+ and `gasPrice` are optional; `value` accepts the alias `amount` for
105
+ parity with the desktop and CLI clients. Self-sends (`from === to`)
106
+ return a `cannot transfer to self` validation error.
107
+
108
+ ```typescript
109
+ const txHash = await client.wallet.signAndSend({
110
+ from: '0x...',
111
+ to: '0x...',
112
+ value: 1_000_000_000_000_000_000n,
113
+ // nonce, chainId, gasPrice all optional — looked up live
114
+ });
115
+ ```
116
+
117
+ `client.sendTransaction(...)` and `client.wallet.signAndSend(...)`
118
+ are both thin wrappers over this RPC.
119
+
120
+ 2. **Offline sign, then submit.** Call `tenzro_signTransaction` to obtain
121
+ `{signature, public_key, pq_signature, pq_public_key, timestamp,
122
+ tx_hash}`, then resubmit later via `eth_sendRawTransaction` with all
123
+ six fields intact. Use this for batched or air-gapped submission.
124
+
125
+ ## Wallet model
126
+
127
+ `client.wallet.create()` provisions a chain-agnostic 2-of-3 Ed25519 MPC
128
+ wallet. Tenzro wallets are not per-chain — a single wallet projects into
129
+ EVM, SVM, and Canton via the pointer-token model, so there is no `chain`
130
+ parameter. VM-specific operations are exposed through `client.token`
131
+ (`crossVmTransfer`, `wrapTnzo`); transfers to external chains use
132
+ `client.bridge` (LayerZero V2, Chainlink CCIP), `client.debridge`,
133
+ `client.wormhole`, or `client.lifi`.
134
+
135
+ `client.getTransaction(hash)` resolves from finalized storage first, then
136
+ falls back to the consensus mempool — `status` is `"pending"` while the
137
+ transaction is in-mempool and `"finalized"` once block-included, so callers
138
+ polling immediately after broadcast can distinguish "not yet finalized" from
139
+ "unknown hash" (the call returns `null` only when the hash is unknown to
140
+ both storage and mempool).
141
+
142
+ ## Durable state
143
+
144
+ The node persists AI infrastructure to RocksDB and restores it on restart —
145
+ SDK consumers see consistent state across node upgrades and reboots:
146
+
147
+ - **Model catalog** — `ModelRegistry` writes `ModelInfo` records under
148
+ `info:<model_id>` in `CF_MODELS`; models survive restart without
149
+ re-registration.
150
+ - **Agent runtime** — `AgentRuntime` persists `RegisteredAgent`,
151
+ `AgentLifecycleInfo`, and parent→children spawn trees under
152
+ `agent:`/`lifecycle:`/`children:` prefixes in `CF_AGENTS`. Terminated
153
+ agents are retained for audit of `state_history`, `registration_fee`,
154
+ and `tenzro_did`.
155
+ - **Swarms** — `SwarmManager` persists `SwarmState` under `swarm:<swarm_id>`
156
+ in `CF_AGENTS` with write-through on create, status transitions, and
157
+ termination.
158
+
39
159
  ## AppClient (Developer Pattern)
40
160
 
41
161
  ```typescript
@@ -55,15 +175,33 @@ const result = await app.sponsorInference(user.address, 'gemma3-270m', 'Hello');
55
175
 
56
176
  | Module | Key Methods |
57
177
  |--------|------------|
178
+ | `auth` | `onboardHuman()`, `onboardDelegatedAgent()`, `onboardAutonomousAgent()`, `revokeJwt()`, `revokeDid()`, `listPendingApprovals()`, `decideApproval()` |
58
179
  | `wallet` | `createWallet()`, `getBalance()`, `sendTransaction()` |
59
180
  | `identity` | `registerHuman()`, `resolveDid()`, `setUsername()` |
60
- | `agent` | `register()`, `spawnAgent()`, `createSwarm()`, `delegateTask()` |
61
- | `inference` | `listModels()`, `request()`, `estimateCost()` |
181
+ | `agent` | `register(name, creator, capabilities)` (server-provisioned hybrid wallet), `registerWithKeys(name, creator, capabilities, publicKey, pqPublicKey)` (BYOK), `sendMessage(from, to, message)`, `sendMessageSigned({from, to, message, signature, pqSignature, messageType?, replyTo?})`, `spawnAgent()`, `createSwarm()`, `delegateTask()` |
182
+ | `inference` | `listModels()`, `request()`, `estimateCost()`, plus multi-modal helpers for forecast, vision embed/similarity, text embedding, segmentation, detection, audio ASR, video embed (modality-aware routing via `tenzro_forecast`, `tenzro_visionEmbed`, `tenzro_textEmbed`, `tenzro_segment`, `tenzro_detect`, `tenzro_transcribe`, `tenzro_videoEmbed`) |
62
183
  | `token` | `createToken()`, `listTokens()`, `crossVmTransfer()` |
63
184
  | `nft` | `createCollection()`, `mintNft()`, `transferNft()` |
64
185
  | `bridge` | `bridgeTokens()`, `getRoutes()`, `getBridgeStatus()` |
65
- | `settlement` | `createEscrow()`, `releaseEscrow()`, `openPaymentChannel()` |
66
- | `payment` | `createChallenge()`, `payMpp()`, `payX402()` |
186
+ | `wormhole` | `wormholeBridge()`, `getVaa()`, `redeemVaa()` |
187
+ | `cct` | `cctListPools()`, `cctGetPool()` (Chainlink CCT v1.6+ pool registry) |
188
+ | `erc8004` | `register8004Agent()`, `submit8004Feedback()`, `request8004Validation()`, `submit8004Validation()` (Trustless Agents Registry) |
189
+ | `ap2` | `createAp2Mandate()`, `validateMandatePair()` (Agent Payments Protocol intent/cart/payment VDCs) |
190
+ | `agentPayments` | Per-agent runtime spending policies (max-per-tx, daily-cap, enforce_operation pre-check) |
191
+ | `bond` | AgentBond stake operations (Spec 9): `getAgentBond()`, `listAgentBonds()`, `postAgentBond()`, `increaseAgentBond()`, `withdrawAgentBond()` |
192
+ | `insurance` | AgentBond insurance claims (Spec 9): `fileInsuranceClaim()`, `listInsuranceClaims()`, `getInsurancePool()` |
193
+ | `lifecycle` | Agent lifecycle + kill-switch audit trail: `getAgentLifecycle()`, `listKillSwitchReceiptsByTarget()` |
194
+ | `principalChain` | Receipt principal-chain queries (Spec 5): walk every receipt back to its human/organisational controller |
195
+ | `cortex` | Reasoning-tier inference with TEE / TEE+ZK attestation; `DEFAULT_CORTEX_PRICING`, `computeCortexCost()` |
196
+ | `adaptiveBurn` | Adaptive-burn governance dial — `getBurnRateConfig()`, `getSupplyMetrics()`, `getBurnRateRecommendation()` |
197
+ | `seedAgent` | SeedAgent treasury earmark + protocol-owned bootstrap agent registry (Spec 10) |
198
+ | `quota` | Dual-rail burn quota (Spec 3), prioritised mempool lanes, hot-state contention, DA backend registry |
199
+ | `nanopayment` | Per-token streaming micropayment channels |
200
+ | `circuitBreaker` | Provider health management for inference routing |
201
+ | `erc7802` | Cross-chain token mint/burn primitive |
202
+ | `provider` | Hardware detection, model serving, scheduling |
203
+ | `settlement` | `createEscrow()`, `releaseEscrow()`, `refundEscrow()`, `getEscrow()`, `openPaymentChannel()` |
204
+ | `payment` | `createChallenge()`, `payMpp()`, `payX402()`, `listX402Schemes()` (pluggable scheme adapters: `exact`, `permit2`) |
67
205
  | `compliance` | `registerCompliance()`, `checkCompliance()`, `freezeAddress()` |
68
206
  | `crypto` | `signMessage()`, `encrypt()`, `decrypt()`, `hashSha256()` |
69
207
  | `tee` | `detectTee()`, `getAttestation()`, `sealData()` |
@@ -81,12 +219,67 @@ const result = await app.sponsorInference(user.address, 'gemma3-270m', 'Hello');
81
219
  | `canton` | `listDomains()`, `submitCommand()` |
82
220
  | `skill` | `listSkills()`, `registerSkill()` |
83
221
  | `tool` | `listTools()`, `registerTool()` |
222
+ | `svm-cross-vm` | Tenzro Cross-VM SVM-native program: `TENZRO_CROSS_VM_PROGRAM_ID_BASE58`, `encodeBridgeToEvm()`, `encodeBridgeFromEvm()`, `encodeRegisterTokenPointer()`, `encodeTransferCrossVm()`, `decodeCrossVmInstruction()` |
223
+
224
+ ## Auth (OAuth 2.1 + DPoP Onboarding)
225
+
226
+ Onboarding uses OAuth 2.1 (RFC 6749 successor) + DPoP-bound JWTs (RFC 9449) +
227
+ Rich Authorization Requests (RFC 9396). Participants — humans, delegated agents
228
+ under a human controller, and fully autonomous agents — onboard via three RPCs
229
+ that each provision a TDIP identity + MPC wallet and return a JWT bound to a
230
+ holder-supplied DPoP `jkt` (RFC 7638 thumbprint).
231
+
232
+ ```typescript
233
+ import { TenzroClient, TESTNET_CONFIG } from 'tenzro-sdk';
234
+
235
+ const client = new TenzroClient(TESTNET_CONFIG);
236
+
237
+ // Onboard a new human — returns identity, MPC wallet, and access token
238
+ const session = await client.auth.onboardHuman('Alice', /* dpopJkt */ undefined);
239
+ console.log('DID: ', (session.identity as any).did);
240
+ console.log('Wallet: ', (session.wallet as any).address);
241
+ console.log('Token: ', session.access_token.slice(0, 32), '…');
242
+
243
+ // Subsequent privileged calls (sign + send tx, escrow, etc.) authenticate
244
+ // ambiently via these env vars — the SDK forwards them as
245
+ // `Authorization: DPoP <jwt>` and `DPoP: <proof>` on every JSON-RPC call:
246
+ process.env.TENZRO_BEARER_JWT = session.access_token;
247
+ process.env.TENZRO_DPOP_PROOF = '<freshly minted DPoP proof>';
248
+
249
+ // Onboard a delegated agent under Alice's act-chain
250
+ const agent = await client.auth.onboardDelegatedAgent(
251
+ (session.identity as any).did,
252
+ ['inference', 'settlement'],
253
+ { max_transaction_value: '1000000000000000000', allowed_chains: ['tenzro'] },
254
+ );
255
+
256
+ // Revoke (cascades through act-chain by DID)
257
+ await client.auth.revokeDid((session.identity as any).did, 'lost device');
258
+ ```
259
+
260
+ Holder-side DPoP proof generation is left to the caller — sign a per-request
261
+ JWT with your Ed25519 holder key and the JWS-compact form lands in
262
+ `TENZRO_DPOP_PROOF`. See RFC 9449 §4.
263
+
264
+ ## Examples
265
+
266
+ ```bash
267
+ npx ts-node examples/quickstart.ts
268
+ npx ts-node examples/advanced.ts
269
+ npx ts-node examples/marketplace.ts # 14 sections covering tasks, agents, skills, tools, NFTs, governance, payments, bridges
270
+ npx ts-node examples/app_developer.ts
271
+ npx ts-node examples/auth-session.ts
272
+ npx ts-node examples/cortex.ts
273
+ ```
274
+
275
+ See the [examples/](examples/) directory and [Tenzro Cookbook](https://github.com/tenzro/tenzro-cookbook).
84
276
 
85
277
  ## Live Testnet
86
278
 
87
279
  | Endpoint | URL |
88
280
  |----------|-----|
89
281
  | JSON-RPC | `https://rpc.tenzro.network` |
282
+ | Web API | `https://api.tenzro.network` |
90
283
  | MCP Server | `https://mcp.tenzro.network/mcp` |
91
284
  | A2A Server | `https://a2a.tenzro.network` |
92
285
 
@@ -0,0 +1,40 @@
1
+ import { RpcClient } from "./rpc";
2
+ /**
3
+ * Client for the adaptive-burn governance dial (TNZO supply control).
4
+ *
5
+ * Surfaces the current `BurnRateConfig`, rolling `SupplyMetricsSnapshot`,
6
+ * the recommended action computed from the targets and metrics, and the
7
+ * list of in-flight adaptive-burn governance proposals.
8
+ *
9
+ * All endpoints are read-only — the auto-proposal generator and the
10
+ * EIP-1559 fee-market consumer ship alongside the governance executor
11
+ * wiring in a later wave.
12
+ */
13
+ export declare class AdaptiveBurnClient {
14
+ private rpc;
15
+ constructor(rpc: RpcClient);
16
+ /**
17
+ * Returns the current `BurnRateConfig` (base/local/paymaster burn bps).
18
+ * @returns Active burn-rate configuration
19
+ */
20
+ getBurnRateConfig(): Promise<any>;
21
+ /**
22
+ * Returns the latest rolling supply metrics snapshot — circulating
23
+ * supply, epoch delta, burn breakdown, emission breakdown.
24
+ * @returns Latest `SupplyMetricsSnapshot`
25
+ */
26
+ getSupplyMetrics(): Promise<any>;
27
+ /**
28
+ * Computes the recommended adaptive-burn action from the current
29
+ * metrics and configured supply targets. May return `NoChange`,
30
+ * `IncreaseBurnPct`, `DecreaseBurnPct`, or alarm variants.
31
+ * @returns `BurnRateRecommendation`
32
+ */
33
+ getBurnRateRecommendation(): Promise<any>;
34
+ /**
35
+ * List in-flight adaptive-burn governance proposals.
36
+ * @returns Array of proposal records
37
+ */
38
+ listAdaptiveBurnProposals(): Promise<any[]>;
39
+ }
40
+ //# sourceMappingURL=adaptive-burn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-burn.d.ts","sourceRoot":"","sources":["../src/adaptive-burn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC;IAIvC;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;IAItC;;;;;OAKG;IACG,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC;IAI/C;;;OAGG;IACG,yBAAyB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;CAGlD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdaptiveBurnClient = void 0;
4
+ /**
5
+ * Client for the adaptive-burn governance dial (TNZO supply control).
6
+ *
7
+ * Surfaces the current `BurnRateConfig`, rolling `SupplyMetricsSnapshot`,
8
+ * the recommended action computed from the targets and metrics, and the
9
+ * list of in-flight adaptive-burn governance proposals.
10
+ *
11
+ * All endpoints are read-only — the auto-proposal generator and the
12
+ * EIP-1559 fee-market consumer ship alongside the governance executor
13
+ * wiring in a later wave.
14
+ */
15
+ class AdaptiveBurnClient {
16
+ rpc;
17
+ constructor(rpc) {
18
+ this.rpc = rpc;
19
+ }
20
+ /**
21
+ * Returns the current `BurnRateConfig` (base/local/paymaster burn bps).
22
+ * @returns Active burn-rate configuration
23
+ */
24
+ async getBurnRateConfig() {
25
+ return this.rpc.call("tenzro_getBurnRateConfig", [{}]);
26
+ }
27
+ /**
28
+ * Returns the latest rolling supply metrics snapshot — circulating
29
+ * supply, epoch delta, burn breakdown, emission breakdown.
30
+ * @returns Latest `SupplyMetricsSnapshot`
31
+ */
32
+ async getSupplyMetrics() {
33
+ return this.rpc.call("tenzro_getSupplyMetrics", [{}]);
34
+ }
35
+ /**
36
+ * Computes the recommended adaptive-burn action from the current
37
+ * metrics and configured supply targets. May return `NoChange`,
38
+ * `IncreaseBurnPct`, `DecreaseBurnPct`, or alarm variants.
39
+ * @returns `BurnRateRecommendation`
40
+ */
41
+ async getBurnRateRecommendation() {
42
+ return this.rpc.call("tenzro_getBurnRateRecommendation", [{}]);
43
+ }
44
+ /**
45
+ * List in-flight adaptive-burn governance proposals.
46
+ * @returns Array of proposal records
47
+ */
48
+ async listAdaptiveBurnProposals() {
49
+ return this.rpc.call("tenzro_listAdaptiveBurnProposals", [{}]);
50
+ }
51
+ }
52
+ exports.AdaptiveBurnClient = AdaptiveBurnClient;
53
+ //# sourceMappingURL=adaptive-burn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-burn.js","sourceRoot":"","sources":["../src/adaptive-burn.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;GAUG;AACH,MAAa,kBAAkB;IACT;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,yBAAyB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,yBAAyB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,kCAAkC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;CACF;AArCD,gDAqCC"}
package/dist/agent.d.ts CHANGED
@@ -8,20 +8,68 @@ export declare class AgentClient {
8
8
  private rpc;
9
9
  constructor(rpc: RpcClient);
10
10
  /**
11
- * Register a new AI agent on the network.
12
- * @param agentId - Unique identifier for the agent
13
- * @param name - Human-readable name
14
- * @param capabilities - List of agent capabilities
15
- * @returns Registration response with agent ID and status
11
+ * Register a new AI agent on the network. The node provisions a server-
12
+ * side hybrid (FROST Ed25519 + ML-DSA-65) wallet and binds it to a
13
+ * fresh `did:tenzro:machine:` identity. Returns the agent's `agent_id`,
14
+ * `wallet_address`, `tenzro_did`, the agent's `classical_public_key`
15
+ * (32-byte Ed25519 hex) and the `pq_verifying_key_len`.
16
+ *
17
+ * For self-custodial registration (no server-held keys), see
18
+ * {@link registerWithKeys}.
19
+ *
20
+ * @param name - Human-readable agent name
21
+ * @param creator - Hex-encoded address that will own this agent
22
+ * @param capabilities - Capability short names: `nlp`, `vision`, `code`,
23
+ * `data`, `blockchain`, `smart_contract`, `api_integration`,
24
+ * `coordination`. Anything else becomes a `Custom` capability.
16
25
  */
17
- register(agentId: string, name: string, capabilities: string[]): Promise<RegisterAgentResponse>;
26
+ register(name: string, creator: string, capabilities: string[]): Promise<RegisterAgentResponse>;
18
27
  /**
19
- * Send a message to another agent.
20
- * @param agentId - Target agent identifier
21
- * @param message - Message content
22
- * @returns Message response with payload and message ID
28
+ * BYOK registration: register an agent self-custodially with a
29
+ * caller-supplied hybrid keypair. Both `publicKey` (32 bytes, Ed25519)
30
+ * and `pqPublicKey` (1952 bytes, ML-DSA-65) must be supplied as hex
31
+ * (with or without `0x` prefix). The node performs no wallet
32
+ * provisioning; the caller retains full control of the signing keys
33
+ * and is responsible for producing all `sendAgentMessage` signatures
34
+ * off-node. The returned envelope sets `byok: true` and omits the
35
+ * `classical_public_key` / `pq_verifying_key_len` fields (the caller
36
+ * already has them).
37
+ */
38
+ registerWithKeys(name: string, creator: string, capabilities: string[], publicKey: string, pqPublicKey: string): Promise<RegisterAgentResponse>;
39
+ /**
40
+ * Send an unsigned `AgentMessage` from one registered agent to another.
41
+ * Only valid when the local node's `MessageRouter` has
42
+ * `enable_signing == false` (test/dev configs). On the production
43
+ * router this call is rejected with a signature-required error — use
44
+ * {@link sendMessageSigned} instead.
45
+ */
46
+ sendMessage(from: string, to: string, message: string): Promise<AgentMessageResponse>;
47
+ /**
48
+ * Send a hybrid-signed `AgentMessage`. Both signature legs are required
49
+ * when the router enforces signing (production default); half-signed
50
+ * messages are rejected to prevent downgrade attacks.
51
+ *
52
+ * The signing preimage is `SHA-256(AgentMessage::signing_data())`,
53
+ * which depends on `from`, `to`, the resolved sender/recipient wallet
54
+ * addresses, the message body, the message type, and the optional
55
+ * `replyTo`. Callers must construct the same preimage off-node and
56
+ * produce both an Ed25519 (64-byte) and an ML-DSA-65 (3309-byte)
57
+ * signature. Both signatures are passed as hex (with or without `0x`
58
+ * prefix).
59
+ *
60
+ * `replyTo` (if used) MUST be set on the message before signing,
61
+ * because it is part of `signing_data` — the SDK forwards it verbatim
62
+ * so the server reconstructs the same preimage the caller signed.
23
63
  */
24
- sendMessage(agentId: string, message: string): Promise<AgentMessageResponse>;
64
+ sendMessageSigned(params: {
65
+ from: string;
66
+ to: string;
67
+ message: string;
68
+ signature: string;
69
+ pqSignature: string;
70
+ messageType?: "task_request" | "task_response" | "query" | "query_response" | "notification" | "coordination" | "error";
71
+ replyTo?: string;
72
+ }): Promise<AgentMessageResponse>;
25
73
  /**
26
74
  * Delegate a task to an agent using the A2A protocol.
27
75
  * @param agentId - Target agent identifier
@@ -81,12 +129,19 @@ export declare class AgentClient {
81
129
  terminateSwarm(swarmId: string): Promise<TerminateSwarmResponse>;
82
130
  /**
83
131
  * Spawn a new agent from a registered template.
132
+ *
133
+ * When `parentMachineDid` is supplied, the spawned agent's effective
134
+ * delegation scope is the strict intersection of the parent's scope and
135
+ * the template's spec — the child can never be broader than its parent
136
+ * on any axis (numeric ceilings, allow-lists, time bound).
137
+ *
84
138
  * @param templateId - The template to instantiate
85
139
  * @param displayName - Optional human-readable name for the spawned agent
86
140
  * @param context - Optional key-value context passed to the agent at boot
141
+ * @param parentMachineDid - Optional parent machine DID to attenuate against
87
142
  * @returns Spawned agent info with agent_id, template_id, name, and status
88
143
  */
89
- spawnAgentTemplate(templateId: string, displayName?: string, context?: Record<string, string>): Promise<SpawnAgentTemplateResponse>;
144
+ spawnAgentTemplate(templateId: string, displayName?: string, context?: Record<string, string>, parentMachineDid?: string): Promise<SpawnAgentTemplateResponse>;
90
145
  /**
91
146
  * Run an already-spawned template agent through its task loop.
92
147
  * @param agentId - The agent to run
@@ -173,5 +228,65 @@ export declare class AgentClient {
173
228
  * @returns Current gas policy
174
229
  */
175
230
  getGasPolicy(agentId: string): Promise<GasPolicy>;
231
+ /**
232
+ * Operational suspend (Active → Suspended). The reversible counterpart of
233
+ * `resumeAgent`. Distinct from the kill-switch `pauseAgent` /
234
+ * `quarantineAgent` axes (those require signed transactions).
235
+ * @param agentId - The agent identifier
236
+ * @param reason - Free-form audit reason
237
+ */
238
+ suspendAgent(agentId: string, reason: string): Promise<unknown>;
239
+ /**
240
+ * Recover a Suspended agent back to Active. Used to recover from auto-
241
+ * suspend (heartbeat monitor) or a manual `suspendAgent`.
242
+ * @param agentId - The agent identifier
243
+ */
244
+ resumeAgent(agentId: string): Promise<unknown>;
245
+ /**
246
+ * Send a liveness heartbeat for an agent. The heartbeat monitor uses
247
+ * `last_heartbeat` to decide whether to auto-suspend on the next sweep.
248
+ * @param agentId - The agent identifier
249
+ */
250
+ agentHeartbeat(agentId: string): Promise<unknown>;
251
+ /**
252
+ * Fetch every capability attestation registered on this node for
253
+ * `capability`. `capability` accepts the same short-form tags as
254
+ * `register` (`nlp`, `vision`, `code`, `data`, `blockchain`,
255
+ * `smart_contract`, `api_integration`, `coordination`) — anything else
256
+ * is treated as a `Custom` capability with that name.
257
+ *
258
+ * When `verifiedOnly` is `true` the node re-runs query-time signature
259
+ * + expiry checks before returning (defence in depth on top of
260
+ * submit-time verification per #52). Default is `false`.
261
+ *
262
+ * Returns `{capability, verified_only, attestations: [...], total}`.
263
+ *
264
+ * @param capability - Capability short-form or custom name
265
+ * @param verifiedOnly - Force query-time re-verification before returning
266
+ */
267
+ getCapabilityAttestations(capability: string, verifiedOnly?: boolean): Promise<unknown>;
268
+ /**
269
+ * Fetch every capability attestation issued for a specific agent. The
270
+ * reply includes the agent's registered capability list, the full
271
+ * attestation envelopes, and the agent's registered wallet address
272
+ * (used by the self-attestation guard).
273
+ *
274
+ * Returns `{agent_id, capabilities, attestations: [...],
275
+ * total_attestations, registered_address}`.
276
+ *
277
+ * @param agentId - The agent ID to look up
278
+ */
279
+ getAgentCapabilityAttestations(agentId: string): Promise<unknown>;
280
+ /**
281
+ * Pick the "best" agent on this node for `capability`. Selection prefers
282
+ * the most recent TEE-backed attestation, falling back to any agent that
283
+ * has registered the capability. `capability` is parsed with the same
284
+ * short-form/`Custom` rules as `getCapabilityAttestations`.
285
+ *
286
+ * Returns `{capability, best_agent: string | null, total_candidates}`.
287
+ *
288
+ * @param capability - Capability short-form or custom name
289
+ */
290
+ findBestAgentForCapability(capability: string): Promise<unknown>;
176
291
  }
177
292
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}