@elizaos/plugin-elizacloud 2.0.0-beta.1 → 2.0.3-beta.2

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 (286) hide show
  1. package/README.md +20 -44
  2. package/auto-enable.ts +10 -5
  3. package/dist/browser/index.browser.js +2 -2
  4. package/dist/browser/index.browser.js.map +4 -4
  5. package/dist/cjs/index.node.cjs +2888 -5918
  6. package/dist/cjs/index.node.js.map +47 -116
  7. package/dist/cloud/auth-service-types.d.ts +8 -0
  8. package/dist/cloud/auth-service-types.d.ts.map +1 -0
  9. package/dist/cloud/auth-service-types.js +36 -0
  10. package/dist/cloud/auth-service-types.js.map +10 -0
  11. package/dist/cloud/auth.js +4 -51
  12. package/dist/cloud/auth.js.map +4 -4
  13. package/dist/cloud/base-url.d.ts +6 -2
  14. package/dist/cloud/base-url.d.ts.map +1 -1
  15. package/dist/cloud/base-url.js +3 -51
  16. package/dist/cloud/base-url.js.map +3 -3
  17. package/dist/cloud/bridge-client.d.ts +3 -3
  18. package/dist/cloud/bridge-client.d.ts.map +1 -1
  19. package/dist/cloud/bridge-client.js +3 -51
  20. package/dist/cloud/bridge-client.js.map +3 -3
  21. package/dist/cloud/clack-observer.d.ts +35 -0
  22. package/dist/cloud/clack-observer.d.ts.map +1 -0
  23. package/dist/cloud/clack-observer.js +143 -0
  24. package/dist/cloud/clack-observer.js.map +10 -0
  25. package/dist/cloud/cloud-manager.js +45 -92
  26. package/dist/cloud/cloud-manager.js.map +6 -6
  27. package/dist/cloud/cloud-wallet.js +2 -4835
  28. package/dist/cloud/cloud-wallet.js.map +3 -82
  29. package/dist/cloud/duffel-client.d.ts +181 -0
  30. package/dist/cloud/duffel-client.d.ts.map +1 -0
  31. package/dist/cloud/duffel-client.js +506 -0
  32. package/dist/cloud/duffel-client.js.map +11 -0
  33. package/dist/cloud/index.d.ts +6 -0
  34. package/dist/cloud/index.d.ts.map +1 -1
  35. package/dist/cloud/index.js +881 -3
  36. package/dist/cloud/index.js.map +9 -3
  37. package/dist/cloud/lifeops-schedule-sync-client.d.ts +43 -0
  38. package/dist/cloud/lifeops-schedule-sync-client.d.ts.map +1 -0
  39. package/dist/cloud/lifeops-schedule-sync-client.js +180 -0
  40. package/dist/cloud/lifeops-schedule-sync-client.js.map +11 -0
  41. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts +89 -0
  42. package/dist/cloud/lifeops-schedule-sync-contracts.d.ts.map +1 -0
  43. package/dist/cloud/lifeops-schedule-sync-contracts.js +39 -0
  44. package/dist/cloud/lifeops-schedule-sync-contracts.js.map +10 -0
  45. package/dist/cloud/managed-payment-clients.d.ts +166 -0
  46. package/dist/cloud/managed-payment-clients.d.ts.map +1 -0
  47. package/dist/cloud/managed-payment-clients.js +238 -0
  48. package/dist/cloud/managed-payment-clients.js.map +11 -0
  49. package/dist/cloud/null-observer.d.ts +35 -0
  50. package/dist/cloud/null-observer.d.ts.map +1 -0
  51. package/dist/cloud/null-observer.js +45 -0
  52. package/dist/cloud/null-observer.js.map +10 -0
  53. package/dist/cloud/setup-observer.d.ts +98 -0
  54. package/dist/cloud/setup-observer.d.ts.map +1 -0
  55. package/dist/cloud/setup-observer.js +2 -0
  56. package/dist/cloud/setup-observer.js.map +9 -0
  57. package/dist/cloud/validate-url.d.ts.map +1 -1
  58. package/dist/cloud/validate-url.js +2 -1
  59. package/dist/cloud/validate-url.js.map +3 -3
  60. package/dist/cloud/x402-payment-handler.d.ts +85 -0
  61. package/dist/cloud/x402-payment-handler.d.ts.map +1 -0
  62. package/dist/cloud/x402-payment-handler.js +119 -0
  63. package/dist/cloud/x402-payment-handler.js.map +10 -0
  64. package/dist/cloud-setup.d.ts +36 -0
  65. package/dist/cloud-setup.d.ts.map +1 -0
  66. package/dist/{onboarding.js → cloud-setup.js} +139 -139
  67. package/dist/cloud-setup.js.map +14 -0
  68. package/dist/cloud-voice-catalog.d.ts +65 -0
  69. package/dist/cloud-voice-catalog.d.ts.map +1 -0
  70. package/dist/cloud-voice-catalog.js +278 -0
  71. package/dist/cloud-voice-catalog.js.map +12 -0
  72. package/dist/index.browser.d.ts +11 -0
  73. package/dist/index.browser.d.ts.map +1 -1
  74. package/dist/index.d.ts +7 -1
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +5427 -8410
  77. package/dist/index.js.map +47 -116
  78. package/dist/index.node.d.ts +8 -1
  79. package/dist/index.node.d.ts.map +1 -1
  80. package/dist/init.js +17 -4
  81. package/dist/init.js.map +4 -4
  82. package/dist/lib/cloud-connection.d.ts +0 -1
  83. package/dist/lib/cloud-connection.d.ts.map +1 -1
  84. package/dist/lib/cloud-connection.js +14 -91
  85. package/dist/lib/cloud-connection.js.map +7 -7
  86. package/dist/lib/cloud-secrets.d.ts +5 -18
  87. package/dist/lib/cloud-secrets.d.ts.map +1 -1
  88. package/dist/lib/cloud-secrets.js +8 -36
  89. package/dist/lib/cloud-secrets.js.map +3 -3
  90. package/dist/lib/config-like.d.ts +1 -1
  91. package/dist/lib/config-like.d.ts.map +1 -1
  92. package/dist/lib/config-like.js +3 -3
  93. package/dist/lib/config-like.js.map +3 -3
  94. package/dist/lib/credential-type-map.d.ts +1 -1
  95. package/dist/lib/credential-type-map.js.map +1 -1
  96. package/dist/lib/http.d.ts +0 -11
  97. package/dist/lib/http.d.ts.map +1 -1
  98. package/dist/lib/http.js.map +2 -2
  99. package/dist/lib/server-cloud-tts.d.ts +12 -25
  100. package/dist/lib/server-cloud-tts.d.ts.map +1 -1
  101. package/dist/lib/server-cloud-tts.js +31 -329
  102. package/dist/lib/server-cloud-tts.js.map +4 -7
  103. package/dist/lib/tts-debug.d.ts +5 -3
  104. package/dist/lib/tts-debug.d.ts.map +1 -1
  105. package/dist/lib/tts-debug.js +1 -34
  106. package/dist/lib/tts-debug.js.map +3 -4
  107. package/dist/models/embeddings.d.ts +7 -0
  108. package/dist/models/embeddings.d.ts.map +1 -1
  109. package/dist/models/embeddings.js +95 -73
  110. package/dist/models/embeddings.js.map +6 -6
  111. package/dist/models/image.d.ts.map +1 -1
  112. package/dist/models/image.js +42 -15
  113. package/dist/models/image.js.map +6 -6
  114. package/dist/models/index.js +689 -169
  115. package/dist/models/index.js.map +11 -12
  116. package/dist/models/research.d.ts.map +1 -1
  117. package/dist/models/research.js +24 -7
  118. package/dist/models/research.js.map +6 -6
  119. package/dist/models/speech.d.ts +61 -3
  120. package/dist/models/speech.d.ts.map +1 -1
  121. package/dist/models/speech.js +173 -17
  122. package/dist/models/speech.js.map +5 -5
  123. package/dist/models/text.d.ts +113 -1
  124. package/dist/models/text.d.ts.map +1 -1
  125. package/dist/models/text.js +453 -82
  126. package/dist/models/text.js.map +7 -8
  127. package/dist/models/tokenization.d.ts.map +1 -1
  128. package/dist/models/tokenization.js.map +2 -2
  129. package/dist/models/transcription.d.ts.map +1 -1
  130. package/dist/models/transcription.js +20 -6
  131. package/dist/models/transcription.js.map +5 -5
  132. package/dist/node/index.node.js +2842 -5841
  133. package/dist/node/index.node.js.map +47 -116
  134. package/dist/plugin.d.ts.map +1 -1
  135. package/dist/plugin.js +376 -5050
  136. package/dist/plugin.js.map +16 -92
  137. package/dist/providers/openai.js +11 -2
  138. package/dist/providers/openai.js.map +3 -3
  139. package/dist/register-routes.js +376 -5050
  140. package/dist/register-routes.js.map +16 -92
  141. package/dist/routes/cloud-billing-routes.d.ts.map +1 -1
  142. package/dist/routes/cloud-billing-routes.js +17 -60
  143. package/dist/routes/cloud-billing-routes.js.map +8 -7
  144. package/dist/routes/cloud-coding-container-routes.d.ts +8 -0
  145. package/dist/routes/cloud-coding-container-routes.d.ts.map +1 -0
  146. package/dist/routes/cloud-coding-container-routes.js +214 -0
  147. package/dist/routes/cloud-coding-container-routes.js.map +11 -0
  148. package/dist/routes/cloud-compat-routes.d.ts.map +1 -1
  149. package/dist/routes/cloud-compat-routes.js +17 -60
  150. package/dist/routes/cloud-compat-routes.js.map +8 -7
  151. package/dist/routes/cloud-features-routes.js +2 -2
  152. package/dist/routes/cloud-features-routes.js.map +4 -4
  153. package/dist/routes/cloud-relay-routes.d.ts +2 -1
  154. package/dist/routes/cloud-relay-routes.d.ts.map +1 -1
  155. package/dist/routes/cloud-relay-routes.js +84 -2
  156. package/dist/routes/cloud-relay-routes.js.map +5 -4
  157. package/dist/routes/cloud-routes-autonomous.d.ts +3 -4
  158. package/dist/routes/cloud-routes-autonomous.d.ts.map +1 -1
  159. package/dist/routes/cloud-routes-autonomous.js +11 -4893
  160. package/dist/routes/cloud-routes-autonomous.js.map +8 -87
  161. package/dist/routes/cloud-routes.d.ts +2 -2
  162. package/dist/routes/cloud-routes.d.ts.map +1 -1
  163. package/dist/routes/cloud-routes.js +343 -5058
  164. package/dist/routes/cloud-routes.js.map +13 -90
  165. package/dist/routes/cloud-status-routes-autonomous.d.ts +1 -2
  166. package/dist/routes/cloud-status-routes-autonomous.d.ts.map +1 -1
  167. package/dist/routes/cloud-status-routes-autonomous.js +4 -51
  168. package/dist/routes/cloud-status-routes-autonomous.js.map +5 -5
  169. package/dist/routes/cloud-status-routes.js +14 -90
  170. package/dist/routes/cloud-status-routes.js.map +7 -7
  171. package/dist/routes/home-remote-runner-access-url.d.ts +16 -0
  172. package/dist/routes/home-remote-runner-access-url.d.ts.map +1 -0
  173. package/dist/routes/home-remote-runner-access-url.js +91 -0
  174. package/dist/routes/home-remote-runner-access-url.js.map +10 -0
  175. package/dist/routes/travel-provider-relay-routes.d.ts +9 -0
  176. package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
  177. package/dist/routes/travel-provider-relay-routes.js +358 -0
  178. package/dist/routes/travel-provider-relay-routes.js.map +14 -0
  179. package/dist/services/cloud-auth.d.ts +1 -1
  180. package/dist/services/cloud-auth.d.ts.map +1 -1
  181. package/dist/services/cloud-auth.js +7 -2
  182. package/dist/services/cloud-auth.js.map +4 -4
  183. package/dist/services/cloud-backup.js.map +2 -2
  184. package/dist/services/cloud-bootstrap.d.ts.map +1 -1
  185. package/dist/services/cloud-bootstrap.js.map +2 -2
  186. package/dist/services/cloud-bridge.js.map +3 -3
  187. package/dist/services/cloud-container.d.ts +5 -1
  188. package/dist/services/cloud-container.d.ts.map +1 -1
  189. package/dist/services/cloud-container.js +52 -1
  190. package/dist/services/cloud-container.js.map +4 -4
  191. package/dist/services/cloud-credential-provider.js.map +2 -2
  192. package/dist/services/cloud-model-registry.js.map +2 -2
  193. package/dist/types/cloud.d.ts +1 -0
  194. package/dist/types/cloud.d.ts.map +1 -1
  195. package/dist/types/cloud.js.map +2 -2
  196. package/dist/types/index.d.ts +1 -1
  197. package/dist/types/index.d.ts.map +1 -1
  198. package/dist/utils/cloud-sdk/client.d.ts.map +1 -1
  199. package/dist/utils/cloud-sdk/client.js +136 -4
  200. package/dist/utils/cloud-sdk/client.js.map +5 -5
  201. package/dist/utils/cloud-sdk/http.js.map +1 -1
  202. package/dist/utils/cloud-sdk/public-routes.d.ts +186 -0
  203. package/dist/utils/cloud-sdk/public-routes.d.ts.map +1 -1
  204. package/dist/utils/cloud-sdk/public-routes.js +99 -1
  205. package/dist/utils/cloud-sdk/public-routes.js.map +3 -3
  206. package/dist/utils/cloud-sdk/types.d.ts +0 -2
  207. package/dist/utils/cloud-sdk/types.d.ts.map +1 -1
  208. package/dist/utils/cloud-sdk/types.js.map +1 -1
  209. package/dist/utils/config.d.ts +10 -1
  210. package/dist/utils/config.d.ts.map +1 -1
  211. package/dist/utils/config.js +12 -2
  212. package/dist/utils/config.js.map +3 -3
  213. package/dist/utils/events.d.ts +23 -2
  214. package/dist/utils/events.d.ts.map +1 -1
  215. package/dist/utils/events.js +5 -3
  216. package/dist/utils/events.js.map +3 -3
  217. package/dist/utils/sdk-client.d.ts.map +1 -1
  218. package/dist/utils/sdk-client.js +17 -4
  219. package/dist/utils/sdk-client.js.map +4 -4
  220. package/dist/utils/waifu-metering.d.ts +108 -0
  221. package/dist/utils/waifu-metering.d.ts.map +1 -0
  222. package/dist/utils/waifu-metering.js +166 -0
  223. package/dist/utils/waifu-metering.js.map +10 -0
  224. package/package.json +51 -22
  225. package/src/cloud/auth-service-types.ts +24 -0
  226. package/src/cloud/base-url.ts +6 -62
  227. package/src/cloud/clack-observer.ts +189 -0
  228. package/src/cloud/duffel-client.ts +847 -0
  229. package/src/cloud/index.ts +10 -0
  230. package/src/cloud/lifeops-schedule-sync-client.ts +245 -0
  231. package/src/cloud/lifeops-schedule-sync-contracts.ts +124 -0
  232. package/src/cloud/managed-payment-clients.ts +374 -0
  233. package/src/cloud/null-observer.ts +45 -0
  234. package/src/cloud/setup-observer.ts +125 -0
  235. package/src/cloud/validate-url.ts +7 -1
  236. package/src/cloud/x402-payment-handler.ts +215 -0
  237. package/src/cloud-setup.ts +531 -0
  238. package/src/cloud-voice-catalog.test.ts +254 -0
  239. package/src/cloud-voice-catalog.ts +246 -0
  240. package/src/index.browser.ts +29 -0
  241. package/src/index.node.ts +31 -1
  242. package/src/index.ts +81 -4
  243. package/src/lib/cloud-connection.ts +2 -4
  244. package/src/lib/cloud-secrets.ts +10 -54
  245. package/src/lib/config-like.ts +1 -1
  246. package/src/lib/credential-type-map.ts +2 -2
  247. package/src/lib/http.ts +0 -17
  248. package/src/lib/server-cloud-tts.ts +33 -341
  249. package/src/lib/tts-debug.ts +5 -34
  250. package/src/models/embeddings.ts +178 -78
  251. package/src/models/image.ts +29 -14
  252. package/src/models/research.ts +11 -1
  253. package/src/models/speech.ts +269 -23
  254. package/src/models/text.ts +704 -110
  255. package/src/models/tokenization.ts +2 -2
  256. package/src/models/transcription.ts +7 -3
  257. package/src/plugin.ts +38 -0
  258. package/src/routes/cloud-billing-routes.ts +4 -14
  259. package/src/routes/cloud-coding-container-routes.ts +198 -0
  260. package/src/routes/cloud-compat-routes.ts +4 -14
  261. package/src/routes/cloud-features-routes.ts +1 -1
  262. package/src/routes/cloud-relay-routes.ts +47 -1
  263. package/src/routes/cloud-routes-autonomous.ts +7 -10
  264. package/src/routes/cloud-routes.ts +68 -7
  265. package/src/routes/cloud-status-routes-autonomous.ts +6 -2
  266. package/src/routes/home-remote-runner-access-url.ts +83 -0
  267. package/src/routes/travel-provider-relay-routes.ts +193 -0
  268. package/src/services/cloud-auth.ts +9 -2
  269. package/src/services/cloud-bootstrap.ts +1 -3
  270. package/src/services/cloud-bridge.ts +1 -1
  271. package/src/services/cloud-container.ts +93 -0
  272. package/src/services/cloud-credential-provider.ts +1 -1
  273. package/src/services/cloud-model-registry.ts +1 -1
  274. package/src/types/cloud.ts +22 -0
  275. package/src/types/index.ts +19 -0
  276. package/src/utils/cloud-sdk/client.ts +42 -3
  277. package/src/utils/cloud-sdk/public-routes.ts +168 -0
  278. package/src/utils/cloud-sdk/types.ts +0 -2
  279. package/src/utils/config.ts +20 -1
  280. package/src/utils/events.ts +30 -2
  281. package/src/utils/sdk-client.ts +5 -1
  282. package/src/utils/waifu-metering.ts +302 -0
  283. package/dist/onboarding.d.ts +0 -35
  284. package/dist/onboarding.d.ts.map +0 -1
  285. package/dist/onboarding.js.map +0 -14
  286. package/src/onboarding.ts +0 -396
@@ -0,0 +1,166 @@
1
+ export { normalizeCloudSiteUrl, resolveCloudApiBaseUrl } from "./base-url.js";
2
+ export interface ElizaCloudManagedClientConfig {
3
+ configured: boolean;
4
+ apiKey: string | null;
5
+ apiBaseUrl: string;
6
+ siteUrl: string;
7
+ }
8
+ export declare function normalizeElizaCloudApiKey(value: string | undefined | null): string | null;
9
+ export declare function resolveEnvElizaCloudManagedClientConfig(env?: Record<string, string | undefined>): ElizaCloudManagedClientConfig;
10
+ type ConfigSource = () => ElizaCloudManagedClientConfig;
11
+ export declare class PlaidManagedClientError extends Error {
12
+ readonly status: number;
13
+ constructor(status: number, message: string);
14
+ }
15
+ export declare class PaypalManagedClientError extends Error {
16
+ readonly status: number;
17
+ readonly fallback: "csv_export" | null;
18
+ constructor(status: number, message: string, fallback?: "csv_export" | null);
19
+ }
20
+ export interface PlaidLinkTokenResponse {
21
+ linkToken: string;
22
+ expiration: string;
23
+ environment: "sandbox" | "development" | "production";
24
+ }
25
+ export interface PlaidExchangeResponse {
26
+ accessToken: string;
27
+ itemId: string;
28
+ institution: {
29
+ institutionId: string;
30
+ institutionName: string;
31
+ primaryAccountMask: string | null;
32
+ accounts: Array<{
33
+ accountId: string;
34
+ name: string;
35
+ mask: string | null;
36
+ type: string;
37
+ subtype: string | null;
38
+ }>;
39
+ };
40
+ }
41
+ export interface PlaidSyncResponse {
42
+ added: PlaidTransactionDto[];
43
+ modified: PlaidTransactionDto[];
44
+ removed: Array<{
45
+ transaction_id: string;
46
+ }>;
47
+ nextCursor: string;
48
+ hasMore: boolean;
49
+ }
50
+ export interface PlaidTransactionDto {
51
+ transaction_id: string;
52
+ account_id: string;
53
+ amount: number;
54
+ iso_currency_code: string | null;
55
+ unofficial_currency_code: string | null;
56
+ date: string;
57
+ authorized_date: string | null;
58
+ name: string;
59
+ merchant_name: string | null;
60
+ pending: boolean;
61
+ category: string[] | null;
62
+ personal_finance_category: {
63
+ primary: string;
64
+ detailed: string;
65
+ } | null;
66
+ }
67
+ export declare class PlaidManagedClient {
68
+ private readonly configSource;
69
+ constructor(configSource?: ConfigSource);
70
+ private requireConfig;
71
+ get configured(): boolean;
72
+ createLinkToken(): Promise<PlaidLinkTokenResponse>;
73
+ exchangePublicToken(args: {
74
+ publicToken: string;
75
+ }): Promise<PlaidExchangeResponse>;
76
+ syncTransactions(args: {
77
+ accessToken: string;
78
+ cursor?: string;
79
+ count?: number;
80
+ }): Promise<PlaidSyncResponse>;
81
+ }
82
+ export interface PaypalAuthorizeUrlResponse {
83
+ url: string;
84
+ scope: string;
85
+ environment: "live" | "sandbox";
86
+ }
87
+ export interface PaypalCallbackResponse {
88
+ accessToken: string;
89
+ refreshToken: string | null;
90
+ expiresIn: number;
91
+ scope: string;
92
+ capability: {
93
+ hasReporting: boolean;
94
+ hasIdentity: boolean;
95
+ };
96
+ identity: {
97
+ payerId: string;
98
+ emails: string[];
99
+ name: string | null;
100
+ } | null;
101
+ }
102
+ export interface PaypalTransactionDto {
103
+ transaction_info: {
104
+ transaction_id: string;
105
+ transaction_initiation_date: string;
106
+ transaction_updated_date: string | null;
107
+ transaction_amount: {
108
+ currency_code: string;
109
+ value: string;
110
+ };
111
+ transaction_status: string;
112
+ transaction_subject: string | null;
113
+ transaction_note: string | null;
114
+ };
115
+ payer_info?: {
116
+ email_address?: string;
117
+ payer_name?: {
118
+ alternate_full_name?: string;
119
+ };
120
+ };
121
+ shipping_info?: {
122
+ name?: string;
123
+ };
124
+ cart_info?: {
125
+ item_details?: Array<{
126
+ item_name?: string;
127
+ item_amount?: {
128
+ currency_code: string;
129
+ value: string;
130
+ };
131
+ }>;
132
+ };
133
+ }
134
+ export interface PaypalTransactionsResponse {
135
+ transactions: PaypalTransactionDto[];
136
+ totalItems: number;
137
+ totalPages: number;
138
+ page: number;
139
+ }
140
+ export declare class PaypalManagedClient {
141
+ private readonly configSource;
142
+ constructor(configSource?: ConfigSource);
143
+ private requireConfig;
144
+ get configured(): boolean;
145
+ buildAuthorizeUrl(args: {
146
+ state: string;
147
+ }): Promise<PaypalAuthorizeUrlResponse>;
148
+ exchangeCode(args: {
149
+ code: string;
150
+ }): Promise<PaypalCallbackResponse>;
151
+ refreshAccessToken(args: {
152
+ refreshToken: string;
153
+ }): Promise<{
154
+ accessToken: string;
155
+ refreshToken: string | null;
156
+ expiresIn: number;
157
+ scope: string;
158
+ }>;
159
+ searchTransactions(args: {
160
+ accessToken: string;
161
+ startDate: string;
162
+ endDate: string;
163
+ page?: number;
164
+ }): Promise<PaypalTransactionsResponse>;
165
+ }
166
+ //# sourceMappingURL=managed-payment-clients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-payment-clients.d.ts","sourceRoot":"","sources":["../../src/cloud/managed-payment-clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ import { createRequire } from "node:module";
2
+ var __defProp = Object.defineProperty;
3
+ var __returnValue = (v) => v;
4
+ function __exportSetter(name, newValue) {
5
+ this[name] = __returnValue.bind(null, newValue);
6
+ }
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true,
12
+ configurable: true,
13
+ set: __exportSetter.bind(all, name)
14
+ });
15
+ };
16
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
17
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
18
+
19
+ // src/cloud/base-url.ts
20
+ import { normalizeCloudSiteUrl, resolveCloudApiBaseUrl } from "@elizaos/shared";
21
+ var init_base_url = () => {};
22
+
23
+ // src/cloud/managed-payment-clients.ts
24
+ init_base_url();
25
+ init_base_url();
26
+ function normalizeElizaCloudApiKey(value) {
27
+ const trimmed = value?.trim();
28
+ if (!trimmed)
29
+ return null;
30
+ return trimmed.toUpperCase() === "[REDACTED]" ? null : trimmed;
31
+ }
32
+ function resolveEnvElizaCloudManagedClientConfig(env = typeof process === "undefined" ? {} : process.env) {
33
+ const apiKey = normalizeElizaCloudApiKey(env.ELIZAOS_CLOUD_API_KEY);
34
+ const baseUrl = env.ELIZAOS_CLOUD_BASE_URL;
35
+ return {
36
+ configured: Boolean(apiKey),
37
+ apiKey,
38
+ apiBaseUrl: resolveCloudApiBaseUrl(baseUrl),
39
+ siteUrl: normalizeCloudSiteUrl(baseUrl)
40
+ };
41
+ }
42
+ var PLAID_REQUEST_TIMEOUT_MS = 30000;
43
+ var PAYPAL_REQUEST_TIMEOUT_MS = 30000;
44
+
45
+ class PlaidManagedClientError extends Error {
46
+ status;
47
+ constructor(status, message) {
48
+ super(message);
49
+ this.status = status;
50
+ this.name = "PlaidManagedClientError";
51
+ }
52
+ }
53
+
54
+ class PaypalManagedClientError extends Error {
55
+ status;
56
+ fallback;
57
+ constructor(status, message, fallback = null) {
58
+ super(message);
59
+ this.status = status;
60
+ this.fallback = fallback;
61
+ this.name = "PaypalManagedClientError";
62
+ }
63
+ }
64
+ async function readPlaidJson(response) {
65
+ if (!response.ok) {
66
+ let detail = `${response.status} ${response.statusText}`.trim();
67
+ const text = await response.text();
68
+ if (text.trim().length > 0) {
69
+ try {
70
+ const parsed = JSON.parse(text);
71
+ detail = parsed.message ?? parsed.error ?? text.slice(0, 240);
72
+ } catch {
73
+ detail = text.slice(0, 240);
74
+ }
75
+ }
76
+ throw new PlaidManagedClientError(response.status, detail);
77
+ }
78
+ return await response.json();
79
+ }
80
+ async function readPaypalJson(response) {
81
+ if (!response.ok) {
82
+ let detail = `${response.status} ${response.statusText}`.trim();
83
+ let fallback = null;
84
+ const text = await response.text();
85
+ if (text.trim().length > 0) {
86
+ try {
87
+ const parsed = JSON.parse(text);
88
+ detail = parsed.message ?? parsed.error ?? text.slice(0, 240);
89
+ fallback = parsed.fallback ?? null;
90
+ } catch {
91
+ detail = text.slice(0, 240);
92
+ }
93
+ }
94
+ throw new PaypalManagedClientError(response.status, detail, fallback);
95
+ }
96
+ return await response.json();
97
+ }
98
+
99
+ class PlaidManagedClient {
100
+ configSource;
101
+ constructor(configSource = resolveEnvElizaCloudManagedClientConfig) {
102
+ this.configSource = configSource;
103
+ }
104
+ requireConfig() {
105
+ const config = this.configSource();
106
+ if (!config.apiKey) {
107
+ throw new PlaidManagedClientError(409, "Eliza Cloud is not connected.");
108
+ }
109
+ return { ...config, apiKey: config.apiKey };
110
+ }
111
+ get configured() {
112
+ return this.configSource().configured;
113
+ }
114
+ async createLinkToken() {
115
+ const config = this.requireConfig();
116
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/plaid/link-token`, {
117
+ method: "POST",
118
+ headers: {
119
+ Authorization: `Bearer ${config.apiKey}`,
120
+ "Content-Type": "application/json"
121
+ },
122
+ body: "{}",
123
+ signal: AbortSignal.timeout(PLAID_REQUEST_TIMEOUT_MS)
124
+ });
125
+ return readPlaidJson(response);
126
+ }
127
+ async exchangePublicToken(args) {
128
+ const config = this.requireConfig();
129
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/plaid/exchange`, {
130
+ method: "POST",
131
+ headers: {
132
+ Authorization: `Bearer ${config.apiKey}`,
133
+ "Content-Type": "application/json"
134
+ },
135
+ body: JSON.stringify({ publicToken: args.publicToken }),
136
+ signal: AbortSignal.timeout(PLAID_REQUEST_TIMEOUT_MS)
137
+ });
138
+ return readPlaidJson(response);
139
+ }
140
+ async syncTransactions(args) {
141
+ const config = this.requireConfig();
142
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/plaid/sync`, {
143
+ method: "POST",
144
+ headers: {
145
+ Authorization: `Bearer ${config.apiKey}`,
146
+ "Content-Type": "application/json"
147
+ },
148
+ body: JSON.stringify({
149
+ accessToken: args.accessToken,
150
+ cursor: args.cursor ?? "",
151
+ count: args.count ?? 250
152
+ }),
153
+ signal: AbortSignal.timeout(PLAID_REQUEST_TIMEOUT_MS * 2)
154
+ });
155
+ return readPlaidJson(response);
156
+ }
157
+ }
158
+
159
+ class PaypalManagedClient {
160
+ configSource;
161
+ constructor(configSource = resolveEnvElizaCloudManagedClientConfig) {
162
+ this.configSource = configSource;
163
+ }
164
+ requireConfig() {
165
+ const config = this.configSource();
166
+ if (!config.apiKey) {
167
+ throw new PaypalManagedClientError(409, "Eliza Cloud is not connected.");
168
+ }
169
+ return { ...config, apiKey: config.apiKey };
170
+ }
171
+ get configured() {
172
+ return this.configSource().configured;
173
+ }
174
+ async buildAuthorizeUrl(args) {
175
+ const config = this.requireConfig();
176
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/paypal/authorize`, {
177
+ method: "POST",
178
+ headers: {
179
+ Authorization: `Bearer ${config.apiKey}`,
180
+ "Content-Type": "application/json"
181
+ },
182
+ body: JSON.stringify({ state: args.state }),
183
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS)
184
+ });
185
+ return readPaypalJson(response);
186
+ }
187
+ async exchangeCode(args) {
188
+ const config = this.requireConfig();
189
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/paypal/callback`, {
190
+ method: "POST",
191
+ headers: {
192
+ Authorization: `Bearer ${config.apiKey}`,
193
+ "Content-Type": "application/json"
194
+ },
195
+ body: JSON.stringify({ code: args.code }),
196
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS)
197
+ });
198
+ return readPaypalJson(response);
199
+ }
200
+ async refreshAccessToken(args) {
201
+ const config = this.requireConfig();
202
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/paypal/refresh`, {
203
+ method: "POST",
204
+ headers: {
205
+ Authorization: `Bearer ${config.apiKey}`,
206
+ "Content-Type": "application/json"
207
+ },
208
+ body: JSON.stringify({ refreshToken: args.refreshToken }),
209
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS)
210
+ });
211
+ return readPaypalJson(response);
212
+ }
213
+ async searchTransactions(args) {
214
+ const config = this.requireConfig();
215
+ const response = await fetch(`${config.apiBaseUrl}/v1/eliza/paypal/transactions`, {
216
+ method: "POST",
217
+ headers: {
218
+ Authorization: `Bearer ${config.apiKey}`,
219
+ "Content-Type": "application/json"
220
+ },
221
+ body: JSON.stringify(args),
222
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS * 2)
223
+ });
224
+ return readPaypalJson(response);
225
+ }
226
+ }
227
+ export {
228
+ resolveEnvElizaCloudManagedClientConfig,
229
+ resolveCloudApiBaseUrl,
230
+ normalizeElizaCloudApiKey,
231
+ normalizeCloudSiteUrl,
232
+ PlaidManagedClientError,
233
+ PlaidManagedClient,
234
+ PaypalManagedClientError,
235
+ PaypalManagedClient
236
+ };
237
+
238
+ //# debugId=2B8E2C0AADAD7D4A64756E2164756E21
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cloud/base-url.ts", "../src/cloud/managed-payment-clients.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Cloud site/API URL normalizer. The implementation moved to\n * `@elizaos/shared/elizacloud/base-url` so host-layer packages can normalize\n * URLs without reverse-importing this plugin.\n */\nexport { normalizeCloudSiteUrl, resolveCloudApiBaseUrl } from \"@elizaos/shared\";\n",
6
+ "import {\n normalizeCloudSiteUrl,\n resolveCloudApiBaseUrl,\n} from \"./base-url.js\";\n\nexport { normalizeCloudSiteUrl, resolveCloudApiBaseUrl } from \"./base-url.js\";\n\nexport interface ElizaCloudManagedClientConfig {\n configured: boolean;\n apiKey: string | null;\n apiBaseUrl: string;\n siteUrl: string;\n}\n\nexport function normalizeElizaCloudApiKey(\n value: string | undefined | null,\n): string | null {\n const trimmed = value?.trim();\n if (!trimmed) return null;\n return trimmed.toUpperCase() === \"[REDACTED]\" ? null : trimmed;\n}\n\nexport function resolveEnvElizaCloudManagedClientConfig(\n env: Record<string, string | undefined> =\n typeof process === \"undefined\" ? {} : process.env,\n): ElizaCloudManagedClientConfig {\n const apiKey = normalizeElizaCloudApiKey(env.ELIZAOS_CLOUD_API_KEY);\n const baseUrl = env.ELIZAOS_CLOUD_BASE_URL;\n return {\n configured: Boolean(apiKey),\n apiKey,\n apiBaseUrl: resolveCloudApiBaseUrl(baseUrl),\n siteUrl: normalizeCloudSiteUrl(baseUrl),\n };\n}\n\nconst PLAID_REQUEST_TIMEOUT_MS = 30_000;\nconst PAYPAL_REQUEST_TIMEOUT_MS = 30_000;\n\ntype ConfigSource = () => ElizaCloudManagedClientConfig;\n\nexport class PlaidManagedClientError extends Error {\n constructor(\n public readonly status: number,\n message: string,\n ) {\n super(message);\n this.name = \"PlaidManagedClientError\";\n }\n}\n\nexport class PaypalManagedClientError extends Error {\n constructor(\n public readonly status: number,\n message: string,\n public readonly fallback: \"csv_export\" | null = null,\n ) {\n super(message);\n this.name = \"PaypalManagedClientError\";\n }\n}\n\nasync function readPlaidJson<T>(response: Response): Promise<T> {\n if (!response.ok) {\n let detail = `${response.status} ${response.statusText}`.trim();\n const text = await response.text();\n if (text.trim().length > 0) {\n try {\n const parsed = JSON.parse(text) as {\n error?: string;\n message?: string;\n };\n detail = parsed.message ?? parsed.error ?? text.slice(0, 240);\n } catch {\n detail = text.slice(0, 240);\n }\n }\n throw new PlaidManagedClientError(response.status, detail);\n }\n return (await response.json()) as T;\n}\n\nasync function readPaypalJson<T>(response: Response): Promise<T> {\n if (!response.ok) {\n let detail = `${response.status} ${response.statusText}`.trim();\n let fallback: \"csv_export\" | null = null;\n const text = await response.text();\n if (text.trim().length > 0) {\n try {\n const parsed = JSON.parse(text) as {\n error?: string;\n message?: string;\n fallback?: \"csv_export\" | null;\n };\n detail = parsed.message ?? parsed.error ?? text.slice(0, 240);\n fallback = parsed.fallback ?? null;\n } catch {\n detail = text.slice(0, 240);\n }\n }\n throw new PaypalManagedClientError(response.status, detail, fallback);\n }\n return (await response.json()) as T;\n}\n\nexport interface PlaidLinkTokenResponse {\n linkToken: string;\n expiration: string;\n environment: \"sandbox\" | \"development\" | \"production\";\n}\n\nexport interface PlaidExchangeResponse {\n accessToken: string;\n itemId: string;\n institution: {\n institutionId: string;\n institutionName: string;\n primaryAccountMask: string | null;\n accounts: Array<{\n accountId: string;\n name: string;\n mask: string | null;\n type: string;\n subtype: string | null;\n }>;\n };\n}\n\nexport interface PlaidSyncResponse {\n added: PlaidTransactionDto[];\n modified: PlaidTransactionDto[];\n removed: Array<{ transaction_id: string }>;\n nextCursor: string;\n hasMore: boolean;\n}\n\nexport interface PlaidTransactionDto {\n transaction_id: string;\n account_id: string;\n amount: number;\n iso_currency_code: string | null;\n unofficial_currency_code: string | null;\n date: string;\n authorized_date: string | null;\n name: string;\n merchant_name: string | null;\n pending: boolean;\n category: string[] | null;\n personal_finance_category: {\n primary: string;\n detailed: string;\n } | null;\n}\n\nexport class PlaidManagedClient {\n constructor(\n private readonly configSource: ConfigSource =\n resolveEnvElizaCloudManagedClientConfig,\n ) {}\n\n private requireConfig(): ElizaCloudManagedClientConfig & { apiKey: string } {\n const config = this.configSource();\n if (!config.apiKey) {\n throw new PlaidManagedClientError(409, \"Eliza Cloud is not connected.\");\n }\n return { ...config, apiKey: config.apiKey };\n }\n\n get configured(): boolean {\n return this.configSource().configured;\n }\n\n async createLinkToken(): Promise<PlaidLinkTokenResponse> {\n const config = this.requireConfig();\n const response = await fetch(\n `${config.apiBaseUrl}/v1/eliza/plaid/link-token`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: \"{}\",\n signal: AbortSignal.timeout(PLAID_REQUEST_TIMEOUT_MS),\n },\n );\n return readPlaidJson<PlaidLinkTokenResponse>(response);\n }\n\n async exchangePublicToken(args: {\n publicToken: string;\n }): Promise<PlaidExchangeResponse> {\n const config = this.requireConfig();\n const response = await fetch(\n `${config.apiBaseUrl}/v1/eliza/plaid/exchange`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ publicToken: args.publicToken }),\n signal: AbortSignal.timeout(PLAID_REQUEST_TIMEOUT_MS),\n },\n );\n return readPlaidJson<PlaidExchangeResponse>(response);\n }\n\n async syncTransactions(args: {\n accessToken: string;\n cursor?: string;\n count?: number;\n }): Promise<PlaidSyncResponse> {\n const config = this.requireConfig();\n const response = await fetch(`${config.apiBaseUrl}/v1/eliza/plaid/sync`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n accessToken: args.accessToken,\n cursor: args.cursor ?? \"\",\n count: args.count ?? 250,\n }),\n signal: AbortSignal.timeout(PLAID_REQUEST_TIMEOUT_MS * 2),\n });\n return readPlaidJson<PlaidSyncResponse>(response);\n }\n}\n\nexport interface PaypalAuthorizeUrlResponse {\n url: string;\n scope: string;\n environment: \"live\" | \"sandbox\";\n}\n\nexport interface PaypalCallbackResponse {\n accessToken: string;\n refreshToken: string | null;\n expiresIn: number;\n scope: string;\n capability: { hasReporting: boolean; hasIdentity: boolean };\n identity: { payerId: string; emails: string[]; name: string | null } | null;\n}\n\nexport interface PaypalTransactionDto {\n transaction_info: {\n transaction_id: string;\n transaction_initiation_date: string;\n transaction_updated_date: string | null;\n transaction_amount: { currency_code: string; value: string };\n transaction_status: string;\n transaction_subject: string | null;\n transaction_note: string | null;\n };\n payer_info?: {\n email_address?: string;\n payer_name?: { alternate_full_name?: string };\n };\n shipping_info?: { name?: string };\n cart_info?: {\n item_details?: Array<{\n item_name?: string;\n item_amount?: { currency_code: string; value: string };\n }>;\n };\n}\n\nexport interface PaypalTransactionsResponse {\n transactions: PaypalTransactionDto[];\n totalItems: number;\n totalPages: number;\n page: number;\n}\n\nexport class PaypalManagedClient {\n constructor(\n private readonly configSource: ConfigSource =\n resolveEnvElizaCloudManagedClientConfig,\n ) {}\n\n private requireConfig(): ElizaCloudManagedClientConfig & { apiKey: string } {\n const config = this.configSource();\n if (!config.apiKey) {\n throw new PaypalManagedClientError(409, \"Eliza Cloud is not connected.\");\n }\n return { ...config, apiKey: config.apiKey };\n }\n\n get configured(): boolean {\n return this.configSource().configured;\n }\n\n async buildAuthorizeUrl(args: {\n state: string;\n }): Promise<PaypalAuthorizeUrlResponse> {\n const config = this.requireConfig();\n const response = await fetch(\n `${config.apiBaseUrl}/v1/eliza/paypal/authorize`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ state: args.state }),\n signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS),\n },\n );\n return readPaypalJson<PaypalAuthorizeUrlResponse>(response);\n }\n\n async exchangeCode(args: { code: string }): Promise<PaypalCallbackResponse> {\n const config = this.requireConfig();\n const response = await fetch(\n `${config.apiBaseUrl}/v1/eliza/paypal/callback`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code: args.code }),\n signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS),\n },\n );\n return readPaypalJson<PaypalCallbackResponse>(response);\n }\n\n async refreshAccessToken(args: { refreshToken: string }): Promise<{\n accessToken: string;\n refreshToken: string | null;\n expiresIn: number;\n scope: string;\n }> {\n const config = this.requireConfig();\n const response = await fetch(\n `${config.apiBaseUrl}/v1/eliza/paypal/refresh`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ refreshToken: args.refreshToken }),\n signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS),\n },\n );\n return readPaypalJson(response);\n }\n\n async searchTransactions(args: {\n accessToken: string;\n startDate: string;\n endDate: string;\n page?: number;\n }): Promise<PaypalTransactionsResponse> {\n const config = this.requireConfig();\n const response = await fetch(\n `${config.apiBaseUrl}/v1/eliza/paypal/transactions`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(args),\n signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS * 2),\n },\n );\n return readPaypalJson<PaypalTransactionsResponse>(response);\n }\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "2B8E2C0AADAD7D4A64756E2164756E21",
10
+ "names": []
11
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Silent `CloudSetupObserver` for tests and headless runs.
3
+ *
4
+ * - All event methods intentionally ignore their inputs.
5
+ * - All prompt methods resolve to `null` (i.e. "user cancelled"), which
6
+ * lets the orchestrator exercise its cancel branches without surfacing
7
+ * any UI.
8
+ *
9
+ * Tests that want to assert observer calls should use a capturing
10
+ * observer instead.
11
+ *
12
+ * @module cloud/null-observer
13
+ */
14
+ import type { CloudSetupObserver, ConfirmPrompt, ProvisionSuccessInfo, SelectChoicePrompt } from "./setup-observer.js";
15
+ export declare class NullCloudSetupObserver implements CloudSetupObserver {
16
+ onAvailabilityChecked(_result: {
17
+ ok: boolean;
18
+ reason?: string;
19
+ }): void;
20
+ onAuthStart(_loginUrl: string): void;
21
+ onAuthBrowserOpenFailed(_loginUrl: string, _error: Error): void;
22
+ onAuthPollStatus(_status: string): void;
23
+ onAuthSuccess(): void;
24
+ onAuthFailure(_message: string): void;
25
+ onProvisionStart(_agentName: string): void;
26
+ onProvisionStatus(_status: string): void;
27
+ onProvisionTimeout(_agentId: string, _lastStatus: string): void;
28
+ onProvisionFailure(_reason: string): void;
29
+ onProvisionSuccess(_result: ProvisionSuccessInfo): void;
30
+ onNotice(_message: string): void;
31
+ onFatalError(_error: Error, _context: string): void;
32
+ confirm(_prompt: ConfirmPrompt): Promise<boolean | null>;
33
+ selectChoice<T extends string>(_prompt: SelectChoicePrompt<T>): Promise<T | null>;
34
+ }
35
+ //# sourceMappingURL=null-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-observer.d.ts","sourceRoot":"","sources":["../../src/cloud/null-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,qBAAqB,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IACtE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IACpC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI;IAC/D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACvC,aAAa,IAAI,IAAI;IACrB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IACrC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAC1C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACxC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAC/D,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IACzC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAChC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAE7C,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIxD,YAAY,CAAC,CAAC,SAAS,MAAM,EACjC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CAGrB"}
@@ -0,0 +1,45 @@
1
+ import { createRequire } from "node:module";
2
+ var __defProp = Object.defineProperty;
3
+ var __returnValue = (v) => v;
4
+ function __exportSetter(name, newValue) {
5
+ this[name] = __returnValue.bind(null, newValue);
6
+ }
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true,
12
+ configurable: true,
13
+ set: __exportSetter.bind(all, name)
14
+ });
15
+ };
16
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
17
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
18
+
19
+ // src/cloud/null-observer.ts
20
+ class NullCloudSetupObserver {
21
+ onAvailabilityChecked(_result) {}
22
+ onAuthStart(_loginUrl) {}
23
+ onAuthBrowserOpenFailed(_loginUrl, _error) {}
24
+ onAuthPollStatus(_status) {}
25
+ onAuthSuccess() {}
26
+ onAuthFailure(_message) {}
27
+ onProvisionStart(_agentName) {}
28
+ onProvisionStatus(_status) {}
29
+ onProvisionTimeout(_agentId, _lastStatus) {}
30
+ onProvisionFailure(_reason) {}
31
+ onProvisionSuccess(_result) {}
32
+ onNotice(_message) {}
33
+ onFatalError(_error, _context) {}
34
+ async confirm(_prompt) {
35
+ return null;
36
+ }
37
+ async selectChoice(_prompt) {
38
+ return null;
39
+ }
40
+ }
41
+ export {
42
+ NullCloudSetupObserver
43
+ };
44
+
45
+ //# debugId=41A094308B5C165F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cloud/null-observer.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Silent `CloudSetupObserver` for tests and headless runs.\n *\n * - All event methods intentionally ignore their inputs.\n * - All prompt methods resolve to `null` (i.e. \"user cancelled\"), which\n * lets the orchestrator exercise its cancel branches without surfacing\n * any UI.\n *\n * Tests that want to assert observer calls should use a capturing\n * observer instead.\n *\n * @module cloud/null-observer\n */\nimport type {\n CloudSetupObserver,\n ConfirmPrompt,\n ProvisionSuccessInfo,\n SelectChoicePrompt,\n} from \"./setup-observer.js\";\n\nexport class NullCloudSetupObserver implements CloudSetupObserver {\n onAvailabilityChecked(_result: { ok: boolean; reason?: string }): void {}\n onAuthStart(_loginUrl: string): void {}\n onAuthBrowserOpenFailed(_loginUrl: string, _error: Error): void {}\n onAuthPollStatus(_status: string): void {}\n onAuthSuccess(): void {}\n onAuthFailure(_message: string): void {}\n onProvisionStart(_agentName: string): void {}\n onProvisionStatus(_status: string): void {}\n onProvisionTimeout(_agentId: string, _lastStatus: string): void {}\n onProvisionFailure(_reason: string): void {}\n onProvisionSuccess(_result: ProvisionSuccessInfo): void {}\n onNotice(_message: string): void {}\n onFatalError(_error: Error, _context: string): void {}\n\n async confirm(_prompt: ConfirmPrompt): Promise<boolean | null> {\n return null;\n }\n\n async selectChoice<T extends string>(\n _prompt: SelectChoicePrompt<T>,\n ): Promise<T | null> {\n return null;\n }\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAoBO,MAAM,uBAAqD;AAAA,EAChE,qBAAqB,CAAC,SAAiD;AAAA,EACvE,WAAW,CAAC,WAAyB;AAAA,EACrC,uBAAuB,CAAC,WAAmB,QAAqB;AAAA,EAChE,gBAAgB,CAAC,SAAuB;AAAA,EACxC,aAAa,GAAS;AAAA,EACtB,aAAa,CAAC,UAAwB;AAAA,EACtC,gBAAgB,CAAC,YAA0B;AAAA,EAC3C,iBAAiB,CAAC,SAAuB;AAAA,EACzC,kBAAkB,CAAC,UAAkB,aAA2B;AAAA,EAChE,kBAAkB,CAAC,SAAuB;AAAA,EAC1C,kBAAkB,CAAC,SAAqC;AAAA,EACxD,QAAQ,CAAC,UAAwB;AAAA,EACjC,YAAY,CAAC,QAAe,UAAwB;AAAA,OAE9C,QAAO,CAAC,SAAiD;AAAA,IAC7D,OAAO;AAAA;AAAA,OAGH,aAA8B,CAClC,SACmB;AAAA,IACnB,OAAO;AAAA;AAEX;",
8
+ "debugId": "41A094308B5C165F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Transport-agnostic observer for the cloud setup orchestrator.
3
+ *
4
+ * `runCloudSetup` calls into this interface for every user-visible
5
+ * event and every interactive prompt. CLI provides a `@clack/prompts`-
6
+ * backed implementation; web/desktop provides an event-bridge
7
+ * implementation; tests provide a capturing observer.
8
+ *
9
+ * The orchestrator MUST stay free of any presentation-layer concerns
10
+ * (spinners, terminal output, GUI events). It only knows about the
11
+ * methods defined here.
12
+ *
13
+ * @module cloud/setup-observer
14
+ */
15
+ import type { ProvisionInfo } from "./bridge-client.js";
16
+ export interface AvailabilityResult {
17
+ ok: boolean;
18
+ /** Human-readable reason when `ok` is false. */
19
+ reason?: string;
20
+ }
21
+ export interface ProvisionSuccessInfo {
22
+ agentId: string;
23
+ bridgeUrl?: string;
24
+ }
25
+ export interface ConfirmPrompt {
26
+ message: string;
27
+ /** Optional override for the default value when the user just presses enter. */
28
+ defaultValue?: boolean;
29
+ /** Optional label for the "true" branch. CLI surfaces use this on a toggle. */
30
+ activeLabel?: string;
31
+ /** Optional label for the "false" branch. CLI surfaces use this on a toggle. */
32
+ inactiveLabel?: string;
33
+ }
34
+ export interface SelectChoiceOption<T extends string> {
35
+ label: string;
36
+ value: T;
37
+ hint?: string;
38
+ }
39
+ export interface SelectChoicePrompt<T extends string> {
40
+ message: string;
41
+ options: SelectChoiceOption<T>[];
42
+ }
43
+ /**
44
+ * Sink for every event the cloud setup orchestrator surfaces, plus the
45
+ * interactive prompts it needs to resolve.
46
+ *
47
+ * Implementation contract:
48
+ *
49
+ * - Event methods are fire-and-forget; they MUST NOT throw. Implementations
50
+ * that fail to render an event are responsible for their own logging.
51
+ * - Prompt methods are async. A `null` return from `selectChoice` or a
52
+ * cancellation from `confirm` is interpreted by the orchestrator as
53
+ * "user cancelled" — the orchestrator decides what that means for the
54
+ * flow. The observer MUST NOT exit the process or throw on cancel.
55
+ */
56
+ export interface CloudSetupObserver {
57
+ onAvailabilityChecked(result: AvailabilityResult): void;
58
+ onAuthStart(loginUrl: string): void;
59
+ /**
60
+ * The orchestrator could not spawn the OS browser (no `open` / `xdg-open`
61
+ * / `cmd.exe` on PATH, etc.). The login URL is unchanged — the observer
62
+ * can render an inline "visit this URL manually" affordance, retry, or
63
+ * surface the error however it wants. This was previously swallowed
64
+ * silently behind a debug log.
65
+ */
66
+ onAuthBrowserOpenFailed(loginUrl: string, error: Error): void;
67
+ onAuthPollStatus(status: string): void;
68
+ onAuthSuccess(): void;
69
+ onAuthFailure(message: string): void;
70
+ onProvisionStart(agentName: string): void;
71
+ onProvisionStatus(status: string, current?: ProvisionInfo): void;
72
+ onProvisionTimeout(agentId: string, lastStatus: string): void;
73
+ onProvisionFailure(reason: string): void;
74
+ onProvisionSuccess(result: ProvisionSuccessInfo): void;
75
+ /**
76
+ * A categorized user-facing message that doesn't map onto a specific
77
+ * lifecycle event — e.g. "Cloud login was not completed", "Cloud agent
78
+ * is still starting up. You can try `eliza cloud connect` once it's
79
+ * ready." The CLI implementation renders these as `log.warn`.
80
+ */
81
+ onNotice(message: string): void;
82
+ /**
83
+ * An unexpected, non-flow-control error. The orchestrator does not
84
+ * itself swallow errors — it surfaces them here and lets the observer
85
+ * decide whether to retry, fall back, or rethrow.
86
+ */
87
+ onFatalError(error: Error, context: string): void;
88
+ /**
89
+ * Resolve to `true` / `false` for a yes/no decision, or `null` when the
90
+ * user explicitly cancels (e.g. Ctrl-C on CLI, modal dismiss on GUI).
91
+ */
92
+ confirm(prompt: ConfirmPrompt): Promise<boolean | null>;
93
+ /**
94
+ * Resolve to the chosen value, or `null` on cancel.
95
+ */
96
+ selectChoice<T extends string>(prompt: SelectChoicePrompt<T>): Promise<T | null>;
97
+ }
98
+ //# sourceMappingURL=setup-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-observer.d.ts","sourceRoot":"","sources":["../../src/cloud/setup-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAClC;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IAEjC,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAExD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;;;;;;OAMG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,IAAI,IAAI,CAAC;IACtB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjE,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAEvD;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGlD;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAExD;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3B,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+
2
+ //# debugId=F6EBC316424461C464756E2164756E21