@stellar-agent-services/provider-kit 0.0.0-stage → 0.1.1

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 (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +508 -2
  3. package/dist/approve/assets/index-BazIJAI2.css +1 -0
  4. package/dist/approve/assets/index-CL28cSJy.js +420 -0
  5. package/dist/approve/favicon.svg +1 -0
  6. package/dist/approve/index.html +18 -0
  7. package/dist/cli/approval-view.d.ts +80 -0
  8. package/dist/cli/approval-view.d.ts.map +1 -0
  9. package/dist/cli/approval-view.js +5 -0
  10. package/dist/cli/approval-view.js.map +1 -0
  11. package/dist/cli/approval.d.ts +132 -0
  12. package/dist/cli/approval.d.ts.map +1 -0
  13. package/dist/cli/approval.js +542 -0
  14. package/dist/cli/approval.js.map +1 -0
  15. package/dist/cli/check.d.ts +3 -0
  16. package/dist/cli/check.d.ts.map +1 -0
  17. package/dist/cli/check.js +137 -0
  18. package/dist/cli/check.js.map +1 -0
  19. package/dist/cli/dev-account.d.ts +28 -0
  20. package/dist/cli/dev-account.d.ts.map +1 -0
  21. package/dist/cli/dev-account.js +62 -0
  22. package/dist/cli/dev-account.js.map +1 -0
  23. package/dist/cli/dev.d.ts +27 -0
  24. package/dist/cli/dev.d.ts.map +1 -0
  25. package/dist/cli/dev.js +226 -0
  26. package/dist/cli/dev.js.map +1 -0
  27. package/dist/cli/discovery.d.ts +20 -0
  28. package/dist/cli/discovery.d.ts.map +1 -0
  29. package/dist/cli/discovery.js +202 -0
  30. package/dist/cli/discovery.js.map +1 -0
  31. package/dist/cli/env-file.d.ts +16 -0
  32. package/dist/cli/env-file.d.ts.map +1 -0
  33. package/dist/cli/env-file.js +77 -0
  34. package/dist/cli/env-file.js.map +1 -0
  35. package/dist/cli/fly.d.ts +28 -0
  36. package/dist/cli/fly.d.ts.map +1 -0
  37. package/dist/cli/fly.js +92 -0
  38. package/dist/cli/fly.js.map +1 -0
  39. package/dist/cli/index.d.ts +3 -0
  40. package/dist/cli/index.d.ts.map +1 -0
  41. package/dist/cli/index.js +11 -0
  42. package/dist/cli/index.js.map +1 -0
  43. package/dist/cli/init.d.ts +3 -0
  44. package/dist/cli/init.d.ts.map +1 -0
  45. package/dist/cli/init.js +170 -0
  46. package/dist/cli/init.js.map +1 -0
  47. package/dist/cli/launch.d.ts +21 -0
  48. package/dist/cli/launch.d.ts.map +1 -0
  49. package/dist/cli/launch.js +627 -0
  50. package/dist/cli/launch.js.map +1 -0
  51. package/dist/cli/main.d.ts +2 -0
  52. package/dist/cli/main.d.ts.map +1 -0
  53. package/dist/cli/main.js +158 -0
  54. package/dist/cli/main.js.map +1 -0
  55. package/dist/cli/owner-chain.d.ts +88 -0
  56. package/dist/cli/owner-chain.d.ts.map +1 -0
  57. package/dist/cli/owner-chain.js +284 -0
  58. package/dist/cli/owner-chain.js.map +1 -0
  59. package/dist/cli/owner-steps.d.ts +33 -0
  60. package/dist/cli/owner-steps.d.ts.map +1 -0
  61. package/dist/cli/owner-steps.js +121 -0
  62. package/dist/cli/owner-steps.js.map +1 -0
  63. package/dist/cli/processes.d.ts +47 -0
  64. package/dist/cli/processes.d.ts.map +1 -0
  65. package/dist/cli/processes.js +129 -0
  66. package/dist/cli/processes.js.map +1 -0
  67. package/dist/cli/reconcile.d.ts +3 -0
  68. package/dist/cli/reconcile.d.ts.map +1 -0
  69. package/dist/cli/reconcile.js +76 -0
  70. package/dist/cli/reconcile.js.map +1 -0
  71. package/dist/cli/register.d.ts +9 -0
  72. package/dist/cli/register.d.ts.map +1 -0
  73. package/dist/cli/register.js +209 -0
  74. package/dist/cli/register.js.map +1 -0
  75. package/dist/cli/request-validation.d.ts +5 -0
  76. package/dist/cli/request-validation.d.ts.map +1 -0
  77. package/dist/cli/request-validation.js +144 -0
  78. package/dist/cli/request-validation.js.map +1 -0
  79. package/dist/cli/serve.d.ts +25 -0
  80. package/dist/cli/serve.d.ts.map +1 -0
  81. package/dist/cli/serve.js +73 -0
  82. package/dist/cli/serve.js.map +1 -0
  83. package/dist/cli/shared.d.ts +142 -0
  84. package/dist/cli/shared.d.ts.map +1 -0
  85. package/dist/cli/shared.js +110 -0
  86. package/dist/cli/shared.js.map +1 -0
  87. package/dist/cli/status.d.ts +32 -0
  88. package/dist/cli/status.d.ts.map +1 -0
  89. package/dist/cli/status.js +248 -0
  90. package/dist/cli/status.js.map +1 -0
  91. package/dist/cli/target.d.ts +14 -0
  92. package/dist/cli/target.d.ts.map +1 -0
  93. package/dist/cli/target.js +43 -0
  94. package/dist/cli/target.js.map +1 -0
  95. package/dist/cli/trustline.d.ts +3 -0
  96. package/dist/cli/trustline.d.ts.map +1 -0
  97. package/dist/cli/trustline.js +114 -0
  98. package/dist/cli/trustline.js.map +1 -0
  99. package/dist/cli/try.d.ts +54 -0
  100. package/dist/cli/try.d.ts.map +1 -0
  101. package/dist/cli/try.js +450 -0
  102. package/dist/cli/try.js.map +1 -0
  103. package/dist/cli/tunnel.d.ts +13 -0
  104. package/dist/cli/tunnel.d.ts.map +1 -0
  105. package/dist/cli/tunnel.js +43 -0
  106. package/dist/cli/tunnel.js.map +1 -0
  107. package/dist/cli/validators.d.ts +6 -0
  108. package/dist/cli/validators.d.ts.map +1 -0
  109. package/dist/cli/validators.js +14 -0
  110. package/dist/cli/validators.js.map +1 -0
  111. package/dist/define-service.d.ts +71 -0
  112. package/dist/define-service.d.ts.map +1 -0
  113. package/dist/define-service.js +86 -0
  114. package/dist/define-service.js.map +1 -0
  115. package/dist/gateway/config.d.ts +88 -0
  116. package/dist/gateway/config.d.ts.map +1 -0
  117. package/dist/gateway/config.js +201 -0
  118. package/dist/gateway/config.js.map +1 -0
  119. package/dist/gateway/openapi.d.ts +69 -0
  120. package/dist/gateway/openapi.d.ts.map +1 -0
  121. package/dist/gateway/openapi.js +677 -0
  122. package/dist/gateway/openapi.js.map +1 -0
  123. package/dist/gateway/upstream.d.ts +15 -0
  124. package/dist/gateway/upstream.d.ts.map +1 -0
  125. package/dist/gateway/upstream.js +95 -0
  126. package/dist/gateway/upstream.js.map +1 -0
  127. package/dist/http/bounded.d.ts +3 -0
  128. package/dist/http/bounded.d.ts.map +1 -0
  129. package/dist/http/bounded.js +23 -0
  130. package/dist/http/bounded.js.map +1 -0
  131. package/dist/http/node-server.d.ts +15 -0
  132. package/dist/http/node-server.d.ts.map +1 -0
  133. package/dist/http/node-server.js +120 -0
  134. package/dist/http/node-server.js.map +1 -0
  135. package/dist/http/rate-limit.d.ts +11 -0
  136. package/dist/http/rate-limit.d.ts.map +1 -0
  137. package/dist/http/rate-limit.js +35 -0
  138. package/dist/http/rate-limit.js.map +1 -0
  139. package/dist/http/router.d.ts +29 -0
  140. package/dist/http/router.d.ts.map +1 -0
  141. package/dist/http/router.js +329 -0
  142. package/dist/http/router.js.map +1 -0
  143. package/dist/index.d.ts +20 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +31 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/jobs/memory-store.d.ts +3 -0
  148. package/dist/jobs/memory-store.d.ts.map +1 -0
  149. package/dist/jobs/memory-store.js +121 -0
  150. package/dist/jobs/memory-store.js.map +1 -0
  151. package/dist/jobs/reconcile.d.ts +22 -0
  152. package/dist/jobs/reconcile.d.ts.map +1 -0
  153. package/dist/jobs/reconcile.js +82 -0
  154. package/dist/jobs/reconcile.js.map +1 -0
  155. package/dist/jobs/recovery.d.ts +19 -0
  156. package/dist/jobs/recovery.d.ts.map +1 -0
  157. package/dist/jobs/recovery.js +65 -0
  158. package/dist/jobs/recovery.js.map +1 -0
  159. package/dist/jobs/runner.d.ts +38 -0
  160. package/dist/jobs/runner.d.ts.map +1 -0
  161. package/dist/jobs/runner.js +194 -0
  162. package/dist/jobs/runner.js.map +1 -0
  163. package/dist/jobs/scheduler.d.ts +66 -0
  164. package/dist/jobs/scheduler.d.ts.map +1 -0
  165. package/dist/jobs/scheduler.js +197 -0
  166. package/dist/jobs/scheduler.js.map +1 -0
  167. package/dist/jobs/sqlite-store.d.ts +8 -0
  168. package/dist/jobs/sqlite-store.d.ts.map +1 -0
  169. package/dist/jobs/sqlite-store.js +231 -0
  170. package/dist/jobs/sqlite-store.js.map +1 -0
  171. package/dist/jobs/store.d.ts +118 -0
  172. package/dist/jobs/store.d.ts.map +1 -0
  173. package/dist/jobs/store.js +36 -0
  174. package/dist/jobs/store.js.map +1 -0
  175. package/dist/manifest.d.ts +11 -0
  176. package/dist/manifest.d.ts.map +1 -0
  177. package/dist/manifest.js +99 -0
  178. package/dist/manifest.js.map +1 -0
  179. package/dist/payments/chain.d.ts +23 -0
  180. package/dist/payments/chain.d.ts.map +1 -0
  181. package/dist/payments/chain.js +108 -0
  182. package/dist/payments/chain.js.map +1 -0
  183. package/dist/payments/facilitator.d.ts +44 -0
  184. package/dist/payments/facilitator.d.ts.map +1 -0
  185. package/dist/payments/facilitator.js +125 -0
  186. package/dist/payments/facilitator.js.map +1 -0
  187. package/dist/payments/onchain.d.ts +36 -0
  188. package/dist/payments/onchain.d.ts.map +1 -0
  189. package/dist/payments/onchain.js +191 -0
  190. package/dist/payments/onchain.js.map +1 -0
  191. package/dist/payments/payload-checks.d.ts +22 -0
  192. package/dist/payments/payload-checks.d.ts.map +1 -0
  193. package/dist/payments/payload-checks.js +113 -0
  194. package/dist/payments/payload-checks.js.map +1 -0
  195. package/dist/payments/settlement.d.ts +22 -0
  196. package/dist/payments/settlement.d.ts.map +1 -0
  197. package/dist/payments/settlement.js +65 -0
  198. package/dist/payments/settlement.js.map +1 -0
  199. package/dist/payments/x402-server.d.ts +8 -0
  200. package/dist/payments/x402-server.d.ts.map +1 -0
  201. package/dist/payments/x402-server.js +74 -0
  202. package/dist/payments/x402-server.js.map +1 -0
  203. package/dist/provider.d.ts +63 -0
  204. package/dist/provider.d.ts.map +1 -0
  205. package/dist/provider.js +177 -0
  206. package/dist/provider.js.map +1 -0
  207. package/dist/registration.d.ts +86 -0
  208. package/dist/registration.d.ts.map +1 -0
  209. package/dist/registration.js +162 -0
  210. package/dist/registration.js.map +1 -0
  211. package/dist/testing.d.ts +13 -0
  212. package/dist/testing.d.ts.map +1 -0
  213. package/dist/testing.js +48 -0
  214. package/dist/testing.js.map +1 -0
  215. package/dist/validation-request.d.ts +36 -0
  216. package/dist/validation-request.d.ts.map +1 -0
  217. package/dist/validation-request.js +101 -0
  218. package/dist/validation-request.js.map +1 -0
  219. package/package.json +55 -4
  220. package/schemas/gateway-config.schema.json +140 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/cli/launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,158 @@
1
+ // provider-kit CLI (operator side):
2
+ //
3
+ // dev run a provider on this computer, on testnet, with no wallet (a throwaway payTo)
4
+ // try one paid testnet call, from a throwaway payer that only lives in memory
5
+ // launch take it live: one wallet approval registers it, then deploy and wait for it
6
+ // status where it stands, from this computer to verified, and what to run next
7
+ // serve --config <file> gateway mode: put an existing HTTP API behind payment and job recovery
8
+ // init write a starter gateway config, or one from an OpenAPI document
9
+ // check self-check against Provider Standard v1 (no payment, no keys)
10
+ // trustline let the payout account receive USDC (signed in the owner's wallet)
11
+ // register register or update the 8004 identity (signed in the owner's wallet)
12
+ // request-validation ask a verifier for validation in the 8004 Validation Registry (signed the same way)
13
+ // reconcile decide payment_uncertain jobs from on-chain data (signs nothing)
14
+ //
15
+ // This CLI never holds the owner's key. The owner's transactions are signed in their own wallet, on a page the
16
+ // CLI serves on this computer (approval.ts), or with --source by the Stellar CLI keychain. The only keys it makes
17
+ // are throwaway testnet ones, kept in memory and never written anywhere: try's payer, and dev's payout account
18
+ // (dev-account.ts), whose key is dropped once its USDC trustline is signed.
19
+ // `serve` is also shipped as a Docker image (packages/provider-kit/Dockerfile).
20
+ import { parseArgs } from "node:util";
21
+ import { check } from "./check.js";
22
+ import { dev } from "./dev.js";
23
+ import { init } from "./init.js";
24
+ import { launch } from "./launch.js";
25
+ import { reconcile } from "./reconcile.js";
26
+ import { register } from "./register.js";
27
+ import { requestValidation } from "./request-validation.js";
28
+ import { serve } from "./serve.js";
29
+ import { OPTIONS, UsageError } from "./shared.js";
30
+ import { status } from "./status.js";
31
+ import { trustline } from "./trustline.js";
32
+ import { tryCall } from "./try.js";
33
+ const USAGE = `provider-kit: run a paid AI service on Stellar (Provider Standard v1)
34
+
35
+ From nothing to live:
36
+ provider-kit dev [--config <file>] [--with '<command>'] [--tunnel] [-- <command> ...]
37
+ provider-kit try [<service>] ['<input JSON>' | @<file>] [--config <file> | --manifest <url>]
38
+ [--start '<command>'] [--yes] [--json]
39
+ provider-kit launch [--config <file> | --start '<command>' | --manifest <url>] [--url <https origin>]
40
+ [--validator <G...> | --no-validation] [--deploy | --no-deploy] [--no-wait]
41
+ provider-kit status [--config <file>] [--url <https origin>] [--json]
42
+
43
+ More:
44
+ provider-kit serve --config <file> [--port <n>] [--dev] [--no-workers]
45
+ provider-kit init [--out <file>] [--upstream <url>] [--openapi <file | url>] [--json]
46
+ provider-kit check (--config <file> | --manifest <url>) [--dev] [--fix] [--json]
47
+ provider-kit trustline [--config <file> | --manifest <url> | --network <testnet|mainnet>]
48
+ [--source <stellar-cli key>] [--rpc <url>] [--dry-run]
49
+ provider-kit register (--config <file> | --manifest <url>) [--source <stellar-cli key>]
50
+ [--agent-uri <https url>] [--network <stellar-cli network>] [--rpc <url>]
51
+ [--out <file>] [--dry-run]
52
+ provider-kit request-validation (--config <file> | --manifest <url>) --validator <G...>
53
+ [--source <stellar-cli key>] [--network <stellar-cli network>] [--rpc <url>]
54
+ [--out <file>] [--dry-run]
55
+ provider-kit reconcile (--config <file> | --store <file> --network <testnet|pubnet>)
56
+ [--rpc <url>] [--dry-run] [--dev]
57
+
58
+ dev Runs the provider on this computer: a gateway config (default ./provider.config.json),
59
+ or your own command after --. Reads .env. On testnet, with PAY_TO empty, it makes a
60
+ throwaway testnet account to be paid to, so no wallet is needed yet: its key is dropped
61
+ once it can hold USDC. On mainnet, PAY_TO must be your own account: launch sets it up.
62
+ --with runs the API the gateway calls next to it. --tunnel also serves it at a temporary
63
+ public HTTPS address (cloudflared).
64
+ try Pays for one job on testnet, the way any client does, and shows the result and the
65
+ payment on chain. The payer is a throwaway test account, funded with test XLM and test
66
+ USDC, kept in memory only. Without an input, it uses the service's example. When nothing
67
+ answers, it starts the provider for the call: the gateway config, or --start's command.
68
+ It shows the exact payment and asks first; --yes pays without asking.
69
+ launch Takes the provider live at its public HTTPS address (--url, fly.toml's app, or an https://
70
+ PUBLIC_ORIGIN). One page in your wallet adds the USDC trustline, registers it in Stellar
71
+ 8004 (or updates the registration) and asks a verifier to check it. Saves PAY_TO and
72
+ AGENT_ID, then deploys with flyctl when fly.toml is there and you agree, and waits until
73
+ the public manifest is live. --start builds the manifest from your provider's own command.
74
+ status Shows where the provider stands: running here, paid once, registered, live, verified,
75
+ and the one command to run next. --json for scripts and coding agents.
76
+ serve Puts the HTTP API named in the config behind the manifest, x402 payment, job recovery
77
+ and capacity limits. Jobs are kept in SQLite, so paid jobs survive a restart.
78
+ init Writes a starter gateway config to edit. With --openapi, writes a service for each POST
79
+ endpoint of an OpenAPI 3 document (JSON or YAML, a file or a URL such as FastAPI's
80
+ /openapi.json), says why it skipped the others, and checks the config as serve would.
81
+ --upstream is then the API's address, when the document doesn't name a full one.
82
+ check Checks a provider without paying: config, manifest, facilitator, payTo trustline and the
83
+ Stellar 8004 registration, then how agents see it. --fix writes the words search would
84
+ miss into the config's provider.description. Exits 1 if anything fails.
85
+ trustline Lets the payout account (payTo) receive USDC: a USDC trustline, approved in your wallet.
86
+ A new testnet account gets test XLM first. Without --config or --manifest, it sets up the
87
+ account your wallet connects and prints it as PAY_TO.
88
+ register Registers the provider in the Stellar 8004 identity registry, or updates its registration,
89
+ approved in your wallet from the payTo account. Adds the USDC trustline first if it is
90
+ missing, and saves the new agentId to --config.
91
+ request-validation
92
+ Asks a verifier (--validator) to check the provider: validation_request in the Stellar 8004
93
+ Validation Registry, approved in the agent owner's wallet. Prints the request hash for the
94
+ verifier. --out writes the request document once sent.
95
+ reconcile Decides payment_uncertain jobs from on-chain data: paid jobs run (or show their output),
96
+ unpaid ones fail uncharged. A provider with a Soroban RPC does this by itself; --dry-run
97
+ only reports. Exits 1 if any job is still undecided.
98
+
99
+ Approving in your wallet: launch, trustline, register and request-validation open a page on this
100
+ computer where you connect the wallet you already use (Freighter, xBull, Albedo, Hana, Ledger and
101
+ more), review each transaction and approve it there. provider-kit never sees a key. --port <n> picks
102
+ the page's port (default 8790); --no-open prints its link without opening a browser, as over SSH.
103
+ --source <key> signs with the Stellar CLI keychain instead, for scripts and CI (trustline, register,
104
+ request-validation); with it, --dry-run prints the Stellar CLI command.
105
+
106
+ The provider never needs a Stellar secret key. Docs: docs/provider-setup-guide.md`;
107
+ async function main(argv) {
108
+ const { values, positionals } = parseArgs({ args: argv, options: OPTIONS, allowPositionals: true, strict: true });
109
+ const [command, ...args] = positionals;
110
+ if (values.help || command === undefined || command === "help") {
111
+ console.log(USAGE);
112
+ return command === undefined && !values.help ? 1 : 0;
113
+ }
114
+ switch (command) {
115
+ case "dev":
116
+ return dev(values, args);
117
+ case "launch":
118
+ if (args.length > 0)
119
+ throw new UsageError("launch takes no arguments: --start '<command>' runs your provider's command");
120
+ return launch(values);
121
+ case "status":
122
+ if (args.length > 0)
123
+ throw new UsageError("status takes no arguments");
124
+ return status(values);
125
+ case "serve":
126
+ return serve(values);
127
+ case "init":
128
+ return init(values);
129
+ case "check":
130
+ return check(values);
131
+ case "try":
132
+ return tryCall(values, args);
133
+ case "trustline":
134
+ return trustline(values);
135
+ case "register":
136
+ return register(values);
137
+ case "request-validation":
138
+ return requestValidation(values);
139
+ case "reconcile":
140
+ return reconcile(values);
141
+ default:
142
+ throw new UsageError(`unknown command "${command}"`);
143
+ }
144
+ }
145
+ main(process.argv.slice(2)).then((code) => {
146
+ // serve and dev's gateway keep running; everything else exits with its result.
147
+ if (code !== -1)
148
+ process.exitCode = code;
149
+ }, (error) => {
150
+ if (error instanceof UsageError || (error instanceof TypeError && "code" in error && String(error.code).startsWith("ERR_PARSE_ARGS"))) {
151
+ console.error(`provider-kit: ${error.message}\n\n${USAGE}`);
152
+ process.exitCode = 2;
153
+ return;
154
+ }
155
+ console.error(`provider-kit: ${error instanceof Error ? error.message : String(error)}`);
156
+ process.exitCode = 1;
157
+ });
158
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { type StellarNetwork } from "@stellar-agent-services/protocol";
2
+ import { Transaction, xdr } from "@stellar/stellar-sdk";
3
+ import type { PreparedValidationRequest } from "../validation-request.js";
4
+ /** How long a built transaction stays valid: time to review and approve it, even on a hardware wallet. */
5
+ export declare const OWNER_TX_TIMEOUT_SECONDS = 300;
6
+ /** A problem the developer can act on. The approval page shows it; `retry` is what the page offers next. */
7
+ export declare class ApprovalError extends Error {
8
+ readonly title: string;
9
+ readonly retry: "connect" | "rebuild" | "none";
10
+ name: string;
11
+ constructor(title: string, message: string, retry?: "connect" | "rebuild" | "none");
12
+ }
13
+ export interface AccountState {
14
+ exists: boolean;
15
+ /** Whether the account holds a trustline to the network's USDC [P2]. */
16
+ usdcTrustline: boolean;
17
+ }
18
+ export type SendResult = {
19
+ status: "success";
20
+ hash: string;
21
+ ledger: number;
22
+ returnValue?: xdr.ScVal;
23
+ }
24
+ /** The network refused it or it failed in a ledger: nothing happened, and it can be built again. */
25
+ | {
26
+ status: "failed";
27
+ hash: string;
28
+ reason: string;
29
+ }
30
+ /** It may or may not be in a ledger: never send it again without looking it up. */
31
+ | {
32
+ status: "unknown";
33
+ hash: string;
34
+ reason: string;
35
+ };
36
+ /** One invocation of a Stellar 8004 registry. */
37
+ export interface ContractCall {
38
+ /** Which registry, for its error codes. */
39
+ registry: "identity" | "validation";
40
+ contractId: string;
41
+ method: string;
42
+ args: xdr.ScVal[];
43
+ }
44
+ /** The reads and writes of the owner commands. */
45
+ export interface OwnerChain {
46
+ readonly network: StellarNetwork;
47
+ readonly passphrase: string;
48
+ /** Whether the account exists and holds a USDC trustline. Throws when the RPC can't tell. */
49
+ account(address: string): Promise<AccountState>;
50
+ /** Testnet only: funds a new account with test XLM from Friendbot, and waits until it exists. */
51
+ fund(address: string): Promise<void>;
52
+ /** A transaction from `address` that adds its USDC trustline [P2]. */
53
+ trustline(address: string): Promise<Transaction>;
54
+ /**
55
+ * Testnet only: a transaction from `address` that adds its USDC trustline and buys `amount` USDC (base units)
56
+ * with test XLM on the testnet DEX. It funds the throwaway payer of `provider-kit try`.
57
+ */
58
+ buyTestUsdc(address: string, amount: string): Promise<Transaction>;
59
+ /** A contract call from `address`, simulated and assembled, ready to sign. Throws an ApprovalError explaining a contract error. */
60
+ invoke(address: string, call: ContractCall): Promise<Transaction>;
61
+ /** Sends a signed transaction and waits for a ledger to include it. */
62
+ send(transaction: Transaction): Promise<SendResult>;
63
+ }
64
+ export declare function rpcOwnerChain(network: StellarNetwork, rpcUrl?: string): OwnerChain;
65
+ /**
66
+ * The transaction a wallet signed, if it is exactly `built`, signed by `signer` for this network. A wallet
67
+ * that changed anything, signed with another account or for another network is refused: nothing is sent.
68
+ */
69
+ export declare function verifySigned(built: Transaction, signedXdr: string, signer: string, network: StellarNetwork, passphrase: string): Transaction;
70
+ /** register_with_uri(caller, agent_uri): a new agent, owned by the caller, whose wallet is the caller [I3]. */
71
+ export declare function registerCall(identity: string, caller: string, agentUri: string): ContractCall;
72
+ /** set_agent_uri(caller, agent_id, new_uri): a new registration file for an existing agent. */
73
+ export declare function setAgentUriCall(identity: string, caller: string, agentId: number, agentUri: string): ContractCall;
74
+ /** validation_request(caller, validator_address, agent_id, request_uri, request_hash), as prepareValidationRequest() built it. */
75
+ export declare function validationRequestCall(caller: string, prepared: PreparedValidationRequest): ContractCall;
76
+ /** "GDTC…2JMH": enough to tell accounts apart in a message, never enough to approve one. */
77
+ export declare function shortAddress(address: string): string;
78
+ export declare function networkName(network: StellarNetwork): string;
79
+ /** A transaction, account or contract on Stellar Expert. */
80
+ export declare function explorerUrl(network: StellarNetwork, kind: "tx" | "account" | "contract", id: string): string;
81
+ /** Stroops as XLM, such as "0.0012345 XLM". */
82
+ export declare function formatXlm(stroops: string | number | bigint): string;
83
+ /** USDC base units as USDC, such as "0.01 USDC". */
84
+ export declare function formatUsdc(units: string | bigint): string;
85
+ /** A failed simulation as something to act on: the contract's error when it names one. */
86
+ export declare function contractError(registry: ContractCall["registry"], error: unknown): ApprovalError;
87
+ export declare function describeResult(result: xdr.TransactionResult | undefined): string;
88
+ //# sourceMappingURL=owner-chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-chain.d.ts","sourceRoot":"","sources":["../../src/cli/owner-chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,284 @@
1
+ // The owner's transactions: built here, signed in the developer's own wallet, then checked and sent here
2
+ // (docs/provider-setup-guide.md §2, §8 and §9). Nothing in this file holds or asks for a key.
3
+ //
4
+ // - OwnerChain: the reads and writes the owner commands make, plus the test USDC that `provider-kit try`
5
+ // buys for its throwaway payer. rpcOwnerChain() uses Soroban RPC, which takes classic transactions (the
6
+ // USDC trustline) and contract calls (the Stellar 8004 registries) alike. Tests pass a fake.
7
+ // - verifySigned(): what a wallet hands back must be the very transaction built here, signed by the
8
+ // connected account for this network. Anything else is refused before it is sent.
9
+ // - registerCall(), setAgentUriCall(), validationRequestCall(): the registry invocations, with their
10
+ // arguments in each contract's parameter order.
11
+ // Reads fail closed: an account the RPC can't read is an error, never "missing". A transaction whose
12
+ // fate is unknown is reported as unknown, never as failed, so nobody sends it twice.
13
+ import { USDC_ISSUER } from "@stellar-agent-services/protocol";
14
+ import { Account, Address, Asset, BASE_FEE, Contract, FeeBumpTransaction, Keypair, nativeToScVal, Operation, rpc, Transaction, TransactionBuilder, xdr, } from "@stellar/stellar-sdk";
15
+ import { registryConfig } from "../registration.js";
16
+ /** How long a built transaction stays valid: time to review and approve it, even on a hardware wallet. */
17
+ export const OWNER_TX_TIMEOUT_SECONDS = 300;
18
+ /** The most a classic transaction may cost in fees, in stroops: 0.001 XLM. Without surge pricing it costs 0.00001. */
19
+ const CLASSIC_MAX_FEE = "10000";
20
+ /** The most test XLM buyTestUsdc() spends: half of what Friendbot gives a new account. */
21
+ const TEST_XLM_SPEND = "5000";
22
+ const RPC_TIMEOUT_MS = 30_000;
23
+ /** send() polls the RPC once a second for this many seconds. A ledger closes about every 5 s. */
24
+ const POLL_ATTEMPTS = 30;
25
+ const FRIENDBOT_URL = "https://friendbot.stellar.org";
26
+ /** A problem the developer can act on. The approval page shows it; `retry` is what the page offers next. */
27
+ export class ApprovalError extends Error {
28
+ title;
29
+ retry;
30
+ name = "ApprovalError";
31
+ constructor(title, message, retry = "rebuild") {
32
+ super(message);
33
+ this.title = title;
34
+ this.retry = retry;
35
+ }
36
+ }
37
+ export function rpcOwnerChain(network, rpcUrl) {
38
+ const config = registryConfig(network);
39
+ const target = rpcUrl ?? config.rpcUrl;
40
+ const url = new URL(target);
41
+ const loopback = url.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
42
+ if (url.protocol !== "https:" && !loopback)
43
+ throw new TypeError("the Soroban RPC URL must be https:// (http:// only on localhost)");
44
+ const server = new rpc.Server(target, { timeout: RPC_TIMEOUT_MS, allowHttp: loopback });
45
+ const passphrase = config.networkPassphrase;
46
+ const usdc = new Asset("USDC", USDC_ISSUER[network]);
47
+ async function account(address) {
48
+ const keys = [accountKey(address), trustlineKey(address, usdc)];
49
+ const { entries } = await server.getLedgerEntries(...keys);
50
+ const found = new Set(entries.map((entry) => entry.key.toXDR("base64")));
51
+ return { exists: found.has(keys[0].toXDR("base64")), usdcTrustline: found.has(keys[1].toXDR("base64")) };
52
+ }
53
+ async function source(address) {
54
+ const { entries } = await server.getLedgerEntries(accountKey(address));
55
+ const entry = entries[0];
56
+ if (entry === undefined)
57
+ throw new ApprovalError("The account doesn't exist", `${address} isn't on ${networkName(network)} yet.`, "connect");
58
+ return new Account(address, entry.val.account().seqNum().toString());
59
+ }
60
+ return {
61
+ network,
62
+ passphrase,
63
+ account,
64
+ async fund(address) {
65
+ if (network !== "stellar:testnet")
66
+ throw new ApprovalError("No test XLM on Mainnet", "Friendbot funds testnet accounts only.", "none");
67
+ // Friendbot answers 400 for an account that already exists: the account read below decides.
68
+ const response = await fetch(`${FRIENDBOT_URL}/?addr=${encodeURIComponent(address)}`, { signal: AbortSignal.timeout(RPC_TIMEOUT_MS) });
69
+ for (let attempt = 0; attempt < 10; attempt++) {
70
+ if ((await account(address)).exists)
71
+ return;
72
+ await sleep(1000);
73
+ }
74
+ throw new ApprovalError("Friendbot didn't fund the account", `Friendbot answered ${response.status}, and ${address} still doesn't exist. Try again in a minute.`, "connect");
75
+ },
76
+ async trustline(address) {
77
+ return new TransactionBuilder(await source(address), { fee: CLASSIC_MAX_FEE, networkPassphrase: passphrase })
78
+ .addOperation(Operation.changeTrust({ asset: usdc }))
79
+ .setTimeout(OWNER_TX_TIMEOUT_SECONDS)
80
+ .build();
81
+ },
82
+ async buyTestUsdc(address, amount) {
83
+ if (network !== "stellar:testnet")
84
+ throw new ApprovalError("No test USDC on Mainnet", "The testnet DEX sells test USDC only.", "none");
85
+ return new TransactionBuilder(await source(address), { fee: CLASSIC_MAX_FEE, networkPassphrase: passphrase })
86
+ .addOperation(Operation.changeTrust({ asset: usdc }))
87
+ .addOperation(Operation.pathPaymentStrictReceive({
88
+ sendAsset: Asset.native(),
89
+ sendMax: TEST_XLM_SPEND,
90
+ destination: address,
91
+ destAsset: usdc,
92
+ destAmount: decimal(BigInt(amount)),
93
+ path: [],
94
+ }))
95
+ .setTimeout(OWNER_TX_TIMEOUT_SECONDS)
96
+ .build();
97
+ },
98
+ async invoke(address, call) {
99
+ const draft = new TransactionBuilder(await source(address), { fee: BASE_FEE, networkPassphrase: passphrase })
100
+ .addOperation(new Contract(call.contractId).call(call.method, ...call.args))
101
+ .setTimeout(OWNER_TX_TIMEOUT_SECONDS)
102
+ .build();
103
+ try {
104
+ // Simulates the call, then adds its footprint, resource fee and the caller's authorization.
105
+ return await server.prepareTransaction(draft);
106
+ }
107
+ catch (error) {
108
+ throw contractError(call.registry, error);
109
+ }
110
+ },
111
+ async send(transaction) {
112
+ const hash = transaction.hash().toString("hex");
113
+ let sent;
114
+ try {
115
+ sent = await server.sendTransaction(transaction);
116
+ }
117
+ catch (error) {
118
+ return { status: "unknown", hash, reason: `the RPC didn't answer (${error.message})` };
119
+ }
120
+ if (sent.status === "ERROR")
121
+ return { status: "failed", hash, reason: describeResult(sent.errorResult) };
122
+ if (sent.status === "TRY_AGAIN_LATER")
123
+ return { status: "failed", hash, reason: "The network didn't take it just now." };
124
+ // PENDING, or DUPLICATE when it was sent before: either way, follow it into a ledger.
125
+ let response;
126
+ try {
127
+ response = await server.pollTransaction(hash, { attempts: POLL_ATTEMPTS, sleepStrategy: () => 1000 });
128
+ }
129
+ catch (error) {
130
+ return { status: "unknown", hash, reason: `the RPC stopped answering (${error.message})` };
131
+ }
132
+ if (response.status === rpc.Api.GetTransactionStatus.SUCCESS) {
133
+ return { status: "success", hash, ledger: response.ledger, ...(response.returnValue === undefined ? {} : { returnValue: response.returnValue }) };
134
+ }
135
+ if (response.status === rpc.Api.GetTransactionStatus.FAILED)
136
+ return { status: "failed", hash, reason: describeResult(response.resultXdr) };
137
+ return { status: "unknown", hash, reason: `no ledger included it within ${POLL_ATTEMPTS} seconds` };
138
+ },
139
+ };
140
+ }
141
+ /**
142
+ * The transaction a wallet signed, if it is exactly `built`, signed by `signer` for this network. A wallet
143
+ * that changed anything, signed with another account or for another network is refused: nothing is sent.
144
+ */
145
+ export function verifySigned(built, signedXdr, signer, network, passphrase) {
146
+ let signed;
147
+ try {
148
+ signed = TransactionBuilder.fromXDR(signedXdr, passphrase);
149
+ }
150
+ catch {
151
+ throw new ApprovalError("The wallet didn't return a transaction", "Nothing was sent. Approve it again.", "rebuild");
152
+ }
153
+ if (signed instanceof FeeBumpTransaction || !signed.hash().equals(built.hash())) {
154
+ throw new ApprovalError("The wallet changed the transaction", "What it signed isn't the transaction you reviewed, so nothing was sent.", "rebuild");
155
+ }
156
+ const keypair = Keypair.fromPublicKey(signer);
157
+ const hash = signed.hash();
158
+ const signedBySigner = signed.signatures.some((signature) => signature.hint().equals(keypair.signatureHint()) && keypair.verify(hash, signature.signature()));
159
+ if (!signedBySigner) {
160
+ const name = networkName(network);
161
+ throw new ApprovalError("The signature doesn't match", `It isn't signed by ${signer} for ${name}, so nothing was sent. Check that your wallet is on ${name} and uses that account, then approve again.`, "rebuild");
162
+ }
163
+ return signed;
164
+ }
165
+ /** register_with_uri(caller, agent_uri): a new agent, owned by the caller, whose wallet is the caller [I3]. */
166
+ export function registerCall(identity, caller, agentUri) {
167
+ return { registry: "identity", contractId: identity, method: "register_with_uri", args: [new Address(caller).toScVal(), nativeToScVal(agentUri, { type: "string" })] };
168
+ }
169
+ /** set_agent_uri(caller, agent_id, new_uri): a new registration file for an existing agent. */
170
+ export function setAgentUriCall(identity, caller, agentId, agentUri) {
171
+ return {
172
+ registry: "identity",
173
+ contractId: identity,
174
+ method: "set_agent_uri",
175
+ args: [new Address(caller).toScVal(), nativeToScVal(agentId, { type: "u32" }), nativeToScVal(agentUri, { type: "string" })],
176
+ };
177
+ }
178
+ /** validation_request(caller, validator_address, agent_id, request_uri, request_hash), as prepareValidationRequest() built it. */
179
+ export function validationRequestCall(caller, prepared) {
180
+ return {
181
+ registry: "validation",
182
+ contractId: prepared.contractId,
183
+ method: "validation_request",
184
+ args: [
185
+ new Address(caller).toScVal(),
186
+ new Address(prepared.request.validator).toScVal(),
187
+ nativeToScVal(prepared.request.agentId, { type: "u32" }),
188
+ nativeToScVal(prepared.requestUri, { type: "string" }),
189
+ nativeToScVal(Buffer.from(prepared.requestHash, "hex")),
190
+ ],
191
+ };
192
+ }
193
+ /** "GDTC…2JMH": enough to tell accounts apart in a message, never enough to approve one. */
194
+ export function shortAddress(address) {
195
+ return address.length > 12 ? `${address.slice(0, 4)}…${address.slice(-4)}` : address;
196
+ }
197
+ export function networkName(network) {
198
+ return network === "stellar:pubnet" ? "Stellar Mainnet" : "Stellar Testnet";
199
+ }
200
+ /** A transaction, account or contract on Stellar Expert. */
201
+ export function explorerUrl(network, kind, id) {
202
+ return `https://stellar.expert/explorer/${network === "stellar:pubnet" ? "public" : "testnet"}/${kind}/${id}`;
203
+ }
204
+ /** Stroops as XLM, such as "0.0012345 XLM". */
205
+ export function formatXlm(stroops) {
206
+ return `${decimal(BigInt(stroops))} XLM`;
207
+ }
208
+ /** USDC base units as USDC, such as "0.01 USDC". */
209
+ export function formatUsdc(units) {
210
+ return `${decimal(BigInt(units), 2)} USDC`;
211
+ }
212
+ /** An amount with 7 decimals, as Stellar writes assets, with at least `minDecimals` of them. */
213
+ function decimal(units, minDecimals = 0) {
214
+ const whole = units / 10000000n;
215
+ const fraction = (units % 10000000n).toString().padStart(7, "0").replace(/0+$/, "").padEnd(minDecimals, "0");
216
+ return `${whole}${fraction === "" ? "" : `.${fraction}`}`;
217
+ }
218
+ function accountKey(address) {
219
+ return xdr.LedgerKey.account(new xdr.LedgerKeyAccount({ accountId: Keypair.fromPublicKey(address).xdrPublicKey() }));
220
+ }
221
+ function trustlineKey(address, asset) {
222
+ return xdr.LedgerKey.trustline(new xdr.LedgerKeyTrustLine({ accountId: Keypair.fromPublicKey(address).xdrPublicKey(), asset: asset.toTrustLineXDRObject() }));
223
+ }
224
+ /** The registries' contract errors (stellar-8004 contracts/*-registry/src/errors.rs) a developer can run into. */
225
+ const CONTRACT_ERRORS = {
226
+ identity: {
227
+ 1: ["This account can't change the agent", "Only the agent's owner, the address approved for it, or an operator of the owner's can."],
228
+ 3: ["The agent doesn't exist", "Check provider.agentId [I2]."],
229
+ 8: ["The registration is empty", "The registration file can't be empty [I1]."],
230
+ },
231
+ validation: {
232
+ 1: ["This account can't ask for the agent", "Only the agent's owner, the address approved for it, or an operator of the owner's can."],
233
+ 4: ["This request was already sent", "The Validation Registry has a request with this hash. Look it up before sending another."],
234
+ 7: ["The agent doesn't exist", "Check provider.agentId [I2]."],
235
+ },
236
+ };
237
+ /** A failed simulation as something to act on: the contract's error when it names one. */
238
+ export function contractError(registry, error) {
239
+ if (error instanceof ApprovalError)
240
+ return error;
241
+ const message = error instanceof Error ? error.message : String(error);
242
+ const code = /Error\(Contract, #(\d+)\)/.exec(message)?.[1];
243
+ const known = code === undefined ? undefined : CONTRACT_ERRORS[registry][Number(code)];
244
+ if (known !== undefined)
245
+ return new ApprovalError(known[0], known[1], "connect");
246
+ if (code !== undefined)
247
+ return new ApprovalError("The contract refused the call", `The ${registry} registry answered with error #${code}.`, "rebuild");
248
+ return new ApprovalError("The transaction can't be built", `Simulating it failed: ${message.split("\n")[0]}`, "rebuild");
249
+ }
250
+ /** Why the network refused a transaction, from its result code. */
251
+ const RESULT_CODES = {
252
+ txTooLate: "It expired before it reached the network.",
253
+ txBadSeq: "The account sent another transaction first.",
254
+ txBadAuth: "The signature doesn't authorize the account. Accounts that need several signatures aren't supported here.",
255
+ txInsufficientBalance: "The account doesn't have enough XLM for the fee.",
256
+ txNoAccount: "The account doesn't exist.",
257
+ txInsufficientFee: "The fee was too low for the network's load right now.",
258
+ txSorobanInvalid: "The contract call's resources didn't fit.",
259
+ changeTrustLowReserve: "The account needs 0.5 XLM more to hold USDC: Stellar keeps it in reserve while the trustline exists.",
260
+ pathPaymentStrictReceiveTooFewOffers: "The testnet DEX has no test USDC for sale right now.",
261
+ pathPaymentStrictReceiveOverSendmax: "Test USDC costs more XLM on the testnet DEX right now than the account may spend.",
262
+ invokeHostFunctionTrapped: "The contract refused the call.",
263
+ invokeHostFunctionResourceLimitExceeded: "The contract call needed more resources than simulated.",
264
+ invokeHostFunctionInsufficientRefundableFee: "The contract call needed a higher fee than simulated.",
265
+ invokeHostFunctionEntryArchived: "A registry entry is archived and must be restored first.",
266
+ };
267
+ export function describeResult(result) {
268
+ if (result === undefined)
269
+ return "The network refused it without saying why.";
270
+ const outcome = result.result();
271
+ let code = outcome.switch().name;
272
+ if (code === "txFailed") {
273
+ // The operation that failed. The ones before it succeeded, and were undone with the transaction.
274
+ const codes = outcome
275
+ .results()
276
+ .map((operation) => (operation.switch().name === "opInner" ? operation.tr().value().switch().name : operation.switch().name));
277
+ code = codes.find((name) => !name.endsWith("Success")) ?? codes[0] ?? code;
278
+ }
279
+ return RESULT_CODES[code] ?? `Stellar answered ${code}.`;
280
+ }
281
+ function sleep(ms) {
282
+ return new Promise((resolve) => setTimeout(resolve, ms));
283
+ }
284
+ //# sourceMappingURL=owner-chain.js.map