@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":"try.js","sourceRoot":"","sources":["../../src/cli/try.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type Started } from "./processes.js";
2
+ /** The domain of quick tunnels' addresses. */
3
+ export declare const QUICK_TUNNEL_DOMAIN = "trycloudflare.com";
4
+ export interface Tunnel {
5
+ /** The public origin, such as https://calm-river-1234.trycloudflare.com. */
6
+ url: string;
7
+ stop(): Promise<void>;
8
+ }
9
+ /** Whether a URL is a quick tunnel's, which lasts only as long as the tunnel. */
10
+ export declare function isTemporaryUrl(url: string): boolean;
11
+ /** Opens a quick tunnel to `port` on this computer. `start` stands in for running cloudflared in tests. */
12
+ export declare function quickTunnel(port: number, start?: (command: string) => Started): Promise<Tunnel>;
13
+ //# sourceMappingURL=tunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/cli/tunnel.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE5D,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAIvD,MAAM,WAAW,MAAM;IACrB,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,2GAA2G;AAC3G,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAA4C,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBzI"}
@@ -0,0 +1,43 @@
1
+ // A public HTTPS address for a provider running on this computer: `provider-kit dev --tunnel`.
2
+ //
3
+ // It runs a Cloudflare quick tunnel, `cloudflared tunnel --url http://localhost:<port>`, which needs no account and
4
+ // prints an https://<words>.trycloudflare.com address. The provider is then served under that address, so its manifest
5
+ // passes the HTTPS rule [M6] and anyone can reach it: a teammate, `verifier check`, an agent on another computer. The
6
+ // address changes every run, so it is for trying things out: `provider-kit launch` refuses to register it.
7
+ import { startCommand } from "./processes.js";
8
+ /** The domain of quick tunnels' addresses. */
9
+ export const QUICK_TUNNEL_DOMAIN = "trycloudflare.com";
10
+ const ADDRESS = /https:\/\/[a-z0-9-]+\.trycloudflare\.com/;
11
+ const WAIT_MS = 45_000;
12
+ /** Whether a URL is a quick tunnel's, which lasts only as long as the tunnel. */
13
+ export function isTemporaryUrl(url) {
14
+ try {
15
+ const { hostname } = new URL(url);
16
+ return hostname === QUICK_TUNNEL_DOMAIN || hostname.endsWith(`.${QUICK_TUNNEL_DOMAIN}`);
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ /** Opens a quick tunnel to `port` on this computer. `start` stands in for running cloudflared in tests. */
23
+ export async function quickTunnel(port, start = (command) => startCommand(command)) {
24
+ const tunnel = start(`cloudflared tunnel --no-autoupdate --url http://localhost:${port}`);
25
+ const deadline = Date.now() + WAIT_MS;
26
+ let exitCode;
27
+ void tunnel.exited.then((code) => (exitCode = code));
28
+ while (Date.now() < deadline) {
29
+ const found = ADDRESS.exec(tunnel.output())?.[0];
30
+ if (found !== undefined)
31
+ return { url: found, stop: () => tunnel.stop() };
32
+ if (exitCode !== undefined) {
33
+ const missing = exitCode === 127 || /not found|ENOENT/i.test(tunnel.output());
34
+ throw new Error(missing
35
+ ? "cloudflared isn't installed. Install it (macOS: brew install cloudflared; others: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/), or run without --tunnel"
36
+ : `cloudflared stopped (exit code ${exitCode}): ${tunnel.output().trim().split("\n").slice(-3).join(" ")}`);
37
+ }
38
+ await new Promise((resolve) => setTimeout(resolve, 200));
39
+ }
40
+ await tunnel.stop();
41
+ throw new Error("cloudflared didn't give a public address in time. Try again, or run without --tunnel");
42
+ }
43
+ //# sourceMappingURL=tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/cli/tunnel.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,EAAE;AACF,oHAAoH;AACpH,uHAAuH;AACvH,sHAAsH;AACtH,2GAA2G;AAE3G,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAE5D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,OAAO,GAAG,0CAA0C,CAAC;AAC3D,MAAM,OAAO,GAAG,MAAM,CAAC;AAQvB,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,QAAQ,KAAK,mBAAmB,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,2GAA2G;AAC3G,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,QAAsC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;IACtH,MAAM,MAAM,GAAG,KAAK,CAAC,6DAA6D,IAAI,EAAE,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACtC,IAAI,QAA4B,CAAC;IACjC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,QAAQ,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9E,MAAM,IAAI,KAAK,CACb,OAAO;gBACL,CAAC,CAAC,sMAAsM;gBACxM,CAAC,CAAC,kCAAkC,QAAQ,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC7G,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACpB,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;AAC1G,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { StellarNetwork } from "@stellar-agent-services/protocol";
2
+ /** The default verifier's account, per network. Fill in a verifier's G... address once it runs `verifier watch`. */
3
+ export declare const DEFAULT_VALIDATORS: Partial<Record<StellarNetwork, string>>;
4
+ /** The verifier to ask: STELLAR_VALIDATOR, else the network's default. */
5
+ export declare function defaultValidator(network: StellarNetwork, env?: NodeJS.ProcessEnv): string | undefined;
6
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/cli/validators.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,oHAAoH;AACpH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAM,CAAC;AAE9E,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAGlH"}
@@ -0,0 +1,14 @@
1
+ // The verifier `provider-kit launch` asks for validation when --validator names none (docs/verification.md). A verifier
2
+ // that runs `verifier watch` answers every validation request naming its account, with no hand-off: it checks the
3
+ // provider, publishes its receipt and answers on chain.
4
+ //
5
+ // STELLAR_VALIDATOR names another one from the environment. A network with no default verifier gets no request
6
+ // unless one is named.
7
+ /** The default verifier's account, per network. Fill in a verifier's G... address once it runs `verifier watch`. */
8
+ export const DEFAULT_VALIDATORS = {};
9
+ /** The verifier to ask: STELLAR_VALIDATOR, else the network's default. */
10
+ export function defaultValidator(network, env = process.env) {
11
+ const named = env["STELLAR_VALIDATOR"];
12
+ return named !== undefined && named !== "" ? named : DEFAULT_VALIDATORS[network];
13
+ }
14
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/cli/validators.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,kHAAkH;AAClH,wDAAwD;AACxD,EAAE;AACF,+GAA+G;AAC/G,uBAAuB;AAIvB,oHAAoH;AACpH,MAAM,CAAC,MAAM,kBAAkB,GAA4C,EAAE,CAAC;AAE9E,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,OAAuB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC5F,MAAM,KAAK,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { type Charge, type JsonObject } from "@stellar-agent-services/protocol";
2
+ import { type ValidateFunction } from "ajv/dist/2020.js";
3
+ export interface ServiceConfig<Input extends JsonObject = JsonObject, Output extends JsonObject = JsonObject> {
4
+ name: string;
5
+ title?: string;
6
+ description: string;
7
+ /** USDC as a decimal string, such as "0.01". */
8
+ price: string;
9
+ /** Default "upfront". */
10
+ charge?: Charge;
11
+ expectedDurationSeconds?: number;
12
+ /**
13
+ * Longest the handler may run before the job fails with `timeout`. Default: twice
14
+ * expectedDurationSeconds, or 600. An on-success job also has to finish before its payment expires.
15
+ */
16
+ timeoutSeconds?: number;
17
+ inputSchema: JsonObject;
18
+ outputSchema: JsonObject;
19
+ examples?: {
20
+ input: Input;
21
+ output: Output;
22
+ }[];
23
+ tags?: string[];
24
+ /** Request body limit. Default 1 MiB, the spec's default; at most 10 MiB (§3.1). */
25
+ maxInputBytes?: number;
26
+ /** How many jobs run at once and how long new ones may queue (docs/provider-standard.md §5.8). */
27
+ capacity?: CapacityConfig;
28
+ /**
29
+ * Receives only the parsed input, never payment data. An upfront job whose worker died is run again,
30
+ * so a handler with side effects can use `jobId` to do them once.
31
+ */
32
+ handler: (input: Input, context: HandlerContext) => Promise<Output> | Output;
33
+ }
34
+ export interface HandlerContext {
35
+ /** Aborted when the job runs out of time; stop work and return. */
36
+ signal: AbortSignal;
37
+ jobId: string;
38
+ }
39
+ export interface CapacityConfig {
40
+ /** Jobs that run at the same time. Default 4. */
41
+ concurrency?: number;
42
+ /** Jobs that may wait for a free slot. Default 100. */
43
+ maxQueued?: number;
44
+ /**
45
+ * Longest a new job may expect to wait. Beyond it, create-job answers 503 before payment. Default 60;
46
+ * 0 means no queue. An "on-success" job also has to finish before its payment expires [S2], which
47
+ * can lower it.
48
+ */
49
+ maxQueueWaitSeconds?: number;
50
+ }
51
+ export declare const DEFAULT_CAPACITY: Readonly<Required<CapacityConfig>>;
52
+ /** The spec's default request body limit, and its maximum (§3.1). */
53
+ export declare const DEFAULT_MAX_INPUT_BYTES: number;
54
+ export declare const MAX_INPUT_BYTES: number;
55
+ export interface Service extends Omit<ServiceConfig, "handler" | "charge" | "capacity" | "timeoutSeconds" | "maxInputBytes"> {
56
+ charge: Charge;
57
+ capacity: Required<CapacityConfig>;
58
+ timeoutSeconds: number;
59
+ /** The request body limit that is enforced; published only when the provider set it. */
60
+ inputLimitBytes: number;
61
+ maxInputBytes?: number;
62
+ /** The price in USDC base units (7 decimals). */
63
+ amount: string;
64
+ handler: (input: JsonObject, context: HandlerContext) => Promise<JsonObject> | JsonObject;
65
+ validateInput: ValidateFunction;
66
+ validateOutput: ValidateFunction;
67
+ }
68
+ export declare function defineService<Input extends JsonObject, Output extends JsonObject>(config: ServiceConfig<Input, Output>): Service;
69
+ /** "0.01" -> "100000", without float math. */
70
+ export declare function toBaseUnits(decimal: string): string;
71
+ //# sourceMappingURL=define-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-service.d.ts","sourceRoot":"","sources":["../src/define-service.ts"],"names":[],"mappings":"AAQA,OAAO,EAAwB,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,SAAS,UAAU,GAAG,UAAU;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kGAAkG;IAClG,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC9E;AAED,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA+D,CAAC;AAEhI,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,QAAc,CAAC;AACnD,eAAO,MAAM,eAAe,QAAmB,CAAC;AAGhD,MAAM,WAAW,OAAQ,SAAQ,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC;IAC1H,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAC1F,aAAa,EAAE,gBAAgB,CAAC;IAChC,cAAc,EAAE,gBAAgB,CAAC;CAClC;AAKD,wBAAgB,aAAa,CAAC,KAAK,SAAS,UAAU,EAAE,MAAM,SAAS,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,OAAO,CAsDhI;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnD"}
@@ -0,0 +1,86 @@
1
+ // defineService(): one paid service.
2
+ //
3
+ // Price, schemas, capacity and handler. The input is validated before any 402 [P8] and the handler's
4
+ // output before settling or storing it [S1]. Mistakes a provider can make here fail at startup, with
5
+ // the service named: an on-success service without expectedDurationSeconds [S2], examples that don't
6
+ // match their schemas [S9], a name that can't be a URL segment or tool name (§3.1). createProvider()
7
+ // then checks the whole manifest against the JSON Schema and the remaining rules.
8
+ import { SERVICE_NAME_PATTERN } from "@stellar-agent-services/protocol";
9
+ import { Ajv2020 } from "ajv/dist/2020.js";
10
+ export const DEFAULT_CAPACITY = { concurrency: 4, maxQueued: 100, maxQueueWaitSeconds: 60 };
11
+ /** The spec's default request body limit, and its maximum (§3.1). */
12
+ export const DEFAULT_MAX_INPUT_BYTES = 1024 * 1024;
13
+ export const MAX_INPUT_BYTES = 10 * 1024 * 1024;
14
+ const DEFAULT_TIMEOUT_SECONDS = 600;
15
+ /** USDC has 7 decimals on Stellar. */
16
+ const USDC_DECIMALS = 7;
17
+ export function defineService(config) {
18
+ const fail = (message) => {
19
+ throw new TypeError(`service "${config.name}": ${message}`);
20
+ };
21
+ if (!SERVICE_NAME_PATTERN.test(config.name))
22
+ fail(`the name must match ${SERVICE_NAME_PATTERN} (§3.1)`);
23
+ if (config.charge === "on-success" && config.expectedDurationSeconds === undefined)
24
+ fail("an on-success service must set expectedDurationSeconds [S2]");
25
+ for (const field of ["expectedDurationSeconds", "timeoutSeconds"]) {
26
+ const value = config[field];
27
+ if (value !== undefined && (!Number.isInteger(value) || value < 1))
28
+ fail(`${field} must be a whole number of seconds, at least 1`);
29
+ }
30
+ const inputLimitBytes = config.maxInputBytes ?? DEFAULT_MAX_INPUT_BYTES;
31
+ if (!Number.isInteger(inputLimitBytes) || inputLimitBytes < 1 || inputLimitBytes > MAX_INPUT_BYTES) {
32
+ fail(`maxInputBytes must be a whole number from 1 to ${MAX_INPUT_BYTES}`);
33
+ }
34
+ const capacity = { ...DEFAULT_CAPACITY, ...config.capacity };
35
+ if (!Number.isInteger(capacity.concurrency) || capacity.concurrency < 1) {
36
+ throw new RangeError(`service "${config.name}": capacity.concurrency must be a whole number of at least 1`);
37
+ }
38
+ for (const field of ["maxQueued", "maxQueueWaitSeconds"]) {
39
+ if (!Number.isInteger(capacity[field]) || capacity[field] < 0) {
40
+ throw new RangeError(`service "${config.name}": capacity.${field} must be a whole number of at least 0`);
41
+ }
42
+ }
43
+ // Service schemas are written by the provider, so unknown keywords are ignored, as JSON Schema intends.
44
+ const ajv = new Ajv2020({ strict: false, allErrors: true, validateFormats: false });
45
+ let validateInput;
46
+ let validateOutput;
47
+ try {
48
+ validateInput = ajv.compile(config.inputSchema);
49
+ validateOutput = ajv.compile(config.outputSchema);
50
+ }
51
+ catch (error) {
52
+ return fail(`a schema does not compile: ${error.message}`);
53
+ }
54
+ config.examples?.forEach((example, index) => {
55
+ if (!validateInput(example.input))
56
+ fail(`examples[${index}].input does not match inputSchema [S9]`);
57
+ if (!validateOutput(example.output))
58
+ fail(`examples[${index}].output does not match outputSchema [S9]`);
59
+ });
60
+ const { timeoutSeconds, maxInputBytes: _, ...rest } = config;
61
+ const service = {
62
+ ...rest,
63
+ charge: config.charge ?? "upfront",
64
+ capacity,
65
+ timeoutSeconds: timeoutSeconds ?? (config.expectedDurationSeconds === undefined ? DEFAULT_TIMEOUT_SECONDS : config.expectedDurationSeconds * 2),
66
+ inputLimitBytes,
67
+ amount: toBaseUnits(config.price),
68
+ handler: config.handler,
69
+ validateInput,
70
+ validateOutput,
71
+ };
72
+ if (config.maxInputBytes !== undefined)
73
+ service.maxInputBytes = config.maxInputBytes;
74
+ return service;
75
+ }
76
+ /** "0.01" -> "100000", without float math. */
77
+ export function toBaseUnits(decimal) {
78
+ const match = /^(\d+)(?:\.(\d{1,7}))?$/.exec(decimal);
79
+ if (match === null)
80
+ throw new TypeError(`price must be a decimal with at most ${USDC_DECIMALS} places: "${decimal}"`);
81
+ const units = BigInt(match[1] + (match[2] ?? "").padEnd(USDC_DECIMALS, "0"));
82
+ if (units <= 0n)
83
+ throw new TypeError("price must be above zero");
84
+ return units.toString();
85
+ }
86
+ //# sourceMappingURL=define-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-service.js","sourceRoot":"","sources":["../src/define-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { type JsonObject, type ProviderInfo, type StellarNetwork } from "@stellar-agent-services/protocol";
2
+ import { type CapacityConfig } from "../define-service.js";
3
+ import type { ProviderConfig } from "../provider.js";
4
+ /** The config file, as written. */
5
+ export interface GatewayConfig {
6
+ baseUrl: string;
7
+ network: StellarNetwork;
8
+ payTo: string;
9
+ facilitator: string;
10
+ facilitatorHeaders?: Record<string, string>;
11
+ provider: Omit<ProviderInfo, "agentId"> & {
12
+ agentId?: number | string;
13
+ };
14
+ rpcUrl?: string;
15
+ store?: string;
16
+ listen?: {
17
+ host?: string;
18
+ port?: number;
19
+ };
20
+ maxTimeoutSeconds?: number;
21
+ settleTimeoutSeconds?: number;
22
+ retentionSeconds?: number;
23
+ manifestPath?: string;
24
+ holdSeconds?: number;
25
+ runQueuedJobs?: boolean;
26
+ leaseSeconds?: number;
27
+ rateLimit?: {
28
+ requests: number;
29
+ windowSeconds: number;
30
+ keyHeader: string;
31
+ };
32
+ dev?: boolean;
33
+ services: GatewayService[];
34
+ }
35
+ export interface GatewayService {
36
+ name: string;
37
+ title?: string;
38
+ description: string;
39
+ price: string;
40
+ charge?: "on-success" | "upfront";
41
+ expectedDurationSeconds?: number;
42
+ timeoutSeconds?: number;
43
+ inputSchema: JsonObject | string;
44
+ outputSchema: JsonObject | string;
45
+ examples?: {
46
+ input: JsonObject;
47
+ output: JsonObject;
48
+ }[];
49
+ tags?: string[];
50
+ maxInputBytes?: number;
51
+ capacity?: CapacityConfig;
52
+ upstream: {
53
+ url: string;
54
+ headers?: Record<string, string>;
55
+ };
56
+ }
57
+ export interface LoadedGateway {
58
+ config: ProviderConfig;
59
+ listen: {
60
+ host: string;
61
+ port: number;
62
+ };
63
+ }
64
+ export declare class GatewayConfigError extends Error {
65
+ name: string;
66
+ }
67
+ /** The schema ships next to dist/, so editors can use it too. Compiled on first use. */
68
+ export declare const GATEWAY_CONFIG_SCHEMA_URL: import("url").URL;
69
+ export declare const DEFAULT_PORT = 8787;
70
+ /**
71
+ * Reads and checks a gateway config file. `overrides` are applied on top (CLI flags), and `env` is
72
+ * where "env:NAME" values come from.
73
+ */
74
+ export declare function loadGatewayConfig(path: string, options?: {
75
+ env?: NodeJS.ProcessEnv;
76
+ /** baseUrl serves the provider from another origin, such as its public one for `provider-kit launch`. */
77
+ overrides?: Partial<Pick<GatewayConfig, "dev" | "runQueuedJobs" | "baseUrl">> & {
78
+ port?: number;
79
+ };
80
+ /** false: use a memory store and leave the job database alone (check, register). Default true. */
81
+ openStore?: boolean;
82
+ }): Promise<LoadedGateway>;
83
+ /**
84
+ * Where the provider a config file describes serves its manifest. Only `baseUrl` and `manifestPath` are read, so
85
+ * the rest of the provider's environment (PAY_TO, upstream keys) needn't be set here to find it.
86
+ */
87
+ export declare function gatewayManifestUrl(path: string, env?: NodeJS.ProcessEnv): Promise<string>;
88
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/gateway/config.ts"],"names":[],"mappings":"AAeA,OAAO,EAAyB,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElI,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC;IACjC,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;IACvD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAClC,IAAI,SAAwB;CACtC;AAED,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,mBAAuE,CAAC;AAG9G,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,yGAAyG;IACzG,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS,CAAC,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,kGAAkG;IAClG,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,aAAa,CAAC,CA0HxB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5G"}
@@ -0,0 +1,201 @@
1
+ // Gateway mode: run the Provider Kit in front of an existing HTTP API, in any language, with no code
2
+ // changes to that API (docs/provider-standard.md, "Ways to implement").
3
+ //
4
+ // The config file is JSON, described by schemas/gateway-config.schema.json (point "$schema" at it for
5
+ // editor help). Loading it fails closed, listing every problem: the file's own schema first, then
6
+ // everything createProvider() checks, the manifest included.
7
+ //
8
+ // Secrets stay out of the file: the upstream's API key, a facilitator key and deployment values may be
9
+ // written "env:NAME" and are read from the environment. There is never a Stellar secret key to
10
+ // configure: the gateway, like any provider runtime, holds none. provider.agentId is optional, so an
11
+ // "env:AGENT_ID" whose variable is unset or empty leaves it out: the provider isn't registered yet.
12
+ import { readFileSync } from "node:fs";
13
+ import { readFile } from "node:fs/promises";
14
+ import { dirname, resolve } from "node:path";
15
+ import { DEFAULT_MANIFEST_PATH } from "@stellar-agent-services/protocol";
16
+ import { Ajv2020 } from "ajv/dist/2020.js";
17
+ import { defineService } from "../define-service.js";
18
+ import { memoryStore } from "../jobs/memory-store.js";
19
+ import { sqliteStore } from "../jobs/sqlite-store.js";
20
+ import { httpFacilitator } from "../payments/facilitator.js";
21
+ import { upstreamHandler } from "./upstream.js";
22
+ export class GatewayConfigError extends Error {
23
+ name = "GatewayConfigError";
24
+ }
25
+ /** The schema ships next to dist/, so editors can use it too. Compiled on first use. */
26
+ export const GATEWAY_CONFIG_SCHEMA_URL = new URL("../../schemas/gateway-config.schema.json", import.meta.url);
27
+ let validateConfig;
28
+ export const DEFAULT_PORT = 8787;
29
+ /**
30
+ * Reads and checks a gateway config file. `overrides` are applied on top (CLI flags), and `env` is
31
+ * where "env:NAME" values come from.
32
+ */
33
+ export async function loadGatewayConfig(path, options = {}) {
34
+ const env = options.env ?? process.env;
35
+ const directory = dirname(resolve(path));
36
+ let text;
37
+ try {
38
+ text = await readFile(path, "utf8");
39
+ }
40
+ catch (error) {
41
+ throw new GatewayConfigError(`the config file can't be read: ${error.message}`);
42
+ }
43
+ let raw;
44
+ try {
45
+ raw = JSON.parse(text);
46
+ }
47
+ catch (error) {
48
+ throw new GatewayConfigError(`the config file is not valid JSON: ${error.message}`);
49
+ }
50
+ validateConfig ??= new Ajv2020({ strict: false, allErrors: true }).compile(JSON.parse(readFileSync(GATEWAY_CONFIG_SCHEMA_URL, "utf8")));
51
+ if (!validateConfig(raw)) {
52
+ const problems = (validateConfig.errors ?? []).map((error) => ` ${error.instancePath || "/"} ${error.message ?? ""}`);
53
+ throw new GatewayConfigError(`the config file does not match the gateway config schema:\n${problems.join("\n")}`);
54
+ }
55
+ const file = { ...raw, ...stripUndefined({ dev: options.overrides?.dev, runQueuedJobs: options.overrides?.runQueuedJobs }) };
56
+ const fromEnv = (value, field) => readEnv(value, field, env);
57
+ const headers = (values, field) => values === undefined ? undefined : Object.fromEntries(Object.entries(values).map(([name, value]) => [name, fromEnv(value, `${field}.${name}`)]));
58
+ const loadSchema = async (value, field) => {
59
+ if (typeof value !== "string")
60
+ return value;
61
+ try {
62
+ return JSON.parse(await readFile(resolve(directory, value), "utf8"));
63
+ }
64
+ catch (error) {
65
+ throw new GatewayConfigError(`${field}: the schema file ${value} can't be read: ${error.message}`);
66
+ }
67
+ };
68
+ const services = [];
69
+ for (const [index, service] of file.services.entries()) {
70
+ const at = `services[${index}]`;
71
+ const upstreamHeaders = headers(service.upstream.headers, `${at}.upstream.headers`);
72
+ try {
73
+ services.push(defineService({
74
+ ...stripUndefined({
75
+ title: service.title,
76
+ charge: service.charge,
77
+ expectedDurationSeconds: service.expectedDurationSeconds,
78
+ timeoutSeconds: service.timeoutSeconds,
79
+ examples: service.examples,
80
+ tags: service.tags,
81
+ maxInputBytes: service.maxInputBytes,
82
+ capacity: service.capacity,
83
+ }),
84
+ name: service.name,
85
+ description: service.description,
86
+ price: service.price,
87
+ inputSchema: await loadSchema(service.inputSchema, `${at}.inputSchema`),
88
+ outputSchema: await loadSchema(service.outputSchema, `${at}.outputSchema`),
89
+ handler: upstreamHandler({
90
+ url: fromEnv(service.upstream.url, `${at}.upstream.url`),
91
+ ...(upstreamHeaders === undefined ? {} : { headers: upstreamHeaders }),
92
+ }),
93
+ }));
94
+ }
95
+ catch (error) {
96
+ if (error instanceof GatewayConfigError)
97
+ throw error;
98
+ throw new GatewayConfigError(`${at}: ${error.message}`);
99
+ }
100
+ }
101
+ const { agentId: configuredAgentId, ...info } = file.provider;
102
+ const provider = info;
103
+ const agentIdText = typeof configuredAgentId === "string" ? optionalEnv(configuredAgentId, env) : configuredAgentId;
104
+ if (agentIdText !== undefined) {
105
+ const agentId = Number(agentIdText);
106
+ if (!Number.isInteger(agentId) || agentId < 0 || agentId > 0xffffffff)
107
+ throw new GatewayConfigError("provider.agentId must be a Stellar 8004 agent id (a u32)");
108
+ provider.agentId = agentId;
109
+ }
110
+ const dev = file.dev ?? false;
111
+ const storePath = fromEnv(file.store ?? "./jobs.sqlite", "store");
112
+ const facilitatorExtra = headers(file.facilitatorHeaders, "facilitatorHeaders");
113
+ let facilitator;
114
+ try {
115
+ facilitator = httpFacilitator(fromEnv(file.facilitator, "facilitator"), {
116
+ dev,
117
+ ...stripUndefined({ headers: facilitatorExtra, settleTimeoutSeconds: file.settleTimeoutSeconds }),
118
+ });
119
+ }
120
+ catch (error) {
121
+ throw new GatewayConfigError(`facilitator: ${error.message}`);
122
+ }
123
+ const keyHeader = file.rateLimit?.keyHeader;
124
+ const config = {
125
+ ...stripUndefined({
126
+ maxTimeoutSeconds: file.maxTimeoutSeconds,
127
+ settleTimeoutSeconds: file.settleTimeoutSeconds,
128
+ retentionSeconds: file.retentionSeconds,
129
+ manifestPath: file.manifestPath,
130
+ holdSeconds: file.holdSeconds,
131
+ runQueuedJobs: file.runQueuedJobs,
132
+ leaseSeconds: file.leaseSeconds,
133
+ }),
134
+ baseUrl: options.overrides?.baseUrl ?? fromEnv(file.baseUrl, "baseUrl"),
135
+ network: file.network,
136
+ payTo: fromEnv(file.payTo, "payTo"),
137
+ provider,
138
+ services,
139
+ facilitator,
140
+ ...(file.rpcUrl === undefined ? {} : { rpc: fromEnv(file.rpcUrl, "rpcUrl") }),
141
+ store: storePath === "memory" || options.openStore === false ? memoryStore() : sqliteStore(resolve(directory, storePath)),
142
+ dev,
143
+ };
144
+ if (file.rateLimit !== undefined && keyHeader !== undefined) {
145
+ config.rateLimit = {
146
+ requests: file.rateLimit.requests,
147
+ windowSeconds: file.rateLimit.windowSeconds,
148
+ // A proxy may append to X-Forwarded-For; the first entry is the client it saw.
149
+ key: (request) => request.headers.get(keyHeader)?.split(",")[0]?.trim() || undefined,
150
+ };
151
+ }
152
+ const port = options.overrides?.port ?? (env["PORT"] === undefined ? undefined : Number(env["PORT"])) ?? file.listen?.port ?? DEFAULT_PORT;
153
+ if (!Number.isInteger(port) || port < 0 || port > 65535)
154
+ throw new GatewayConfigError(`the port must be 0–65535, not ${port}`);
155
+ return { config, listen: { host: file.listen?.host ?? "0.0.0.0", port } };
156
+ }
157
+ /**
158
+ * Where the provider a config file describes serves its manifest. Only `baseUrl` and `manifestPath` are read, so
159
+ * the rest of the provider's environment (PAY_TO, upstream keys) needn't be set here to find it.
160
+ */
161
+ export async function gatewayManifestUrl(path, env = process.env) {
162
+ let file;
163
+ try {
164
+ file = JSON.parse(await readFile(path, "utf8"));
165
+ }
166
+ catch (error) {
167
+ throw new GatewayConfigError(`the config file can't be read: ${error.message}`);
168
+ }
169
+ if (typeof file.baseUrl !== "string")
170
+ throw new GatewayConfigError("the config file has no baseUrl");
171
+ const baseUrl = readEnv(file.baseUrl, "baseUrl", env);
172
+ const manifestPath = typeof file.manifestPath === "string" ? file.manifestPath : DEFAULT_MANIFEST_PATH;
173
+ try {
174
+ return new URL(manifestPath, new URL(baseUrl).origin).toString();
175
+ }
176
+ catch {
177
+ throw new GatewayConfigError(`baseUrl is not a URL: ${baseUrl}`);
178
+ }
179
+ }
180
+ /** An optional value: the value itself, or the variable it names as "env:NAME", undefined when that is unset or empty. */
181
+ function optionalEnv(value, env) {
182
+ if (!value.startsWith("env:"))
183
+ return value;
184
+ const found = env[value.slice("env:".length)];
185
+ return found === undefined || found === "" ? undefined : found;
186
+ }
187
+ /** A config value, or the environment variable it names as "env:NAME". */
188
+ function readEnv(value, field, env) {
189
+ if (!value.startsWith("env:"))
190
+ return value;
191
+ const name = value.slice("env:".length);
192
+ const found = env[name];
193
+ if (found === undefined || found === "")
194
+ throw new GatewayConfigError(`${field} reads the environment variable ${name}, which is not set`);
195
+ return found;
196
+ }
197
+ /** Drops undefined members, for exactOptionalPropertyTypes. */
198
+ function stripUndefined(value) {
199
+ return Object.fromEntries(Object.entries(value).filter(([, member]) => member !== undefined));
200
+ }
201
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/gateway/config.ts"],"names":[],"mappings":"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"}