@stellar-agent/core 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 stellar-agent-bridge contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,403 @@
1
+ import { z } from "zod";
2
+ export declare const XLM_DECIMALS = 7;
3
+ export declare const STROOPS_PER_XLM = 10000000n;
4
+ export type NetworkName = "testnet" | "mainnet" | "local";
5
+ export interface NetworkProfile {
6
+ name: NetworkName;
7
+ network: "testnet" | "public" | "local";
8
+ networkPassphrase: string;
9
+ horizonUrl: string | null;
10
+ rpcUrl: string | null;
11
+ friendbotUrl: string | null;
12
+ defaultAsset: "XLM";
13
+ enabled?: boolean | undefined;
14
+ requiresExplicitApproval?: boolean | undefined;
15
+ realFunds: boolean;
16
+ }
17
+ export interface StorageConfig {
18
+ rootDir: string;
19
+ receiptsDir: string;
20
+ ledgersDir: string;
21
+ logsDir: string;
22
+ walletsDir: string;
23
+ policiesDir: string;
24
+ approvalsDir: string;
25
+ scenariosDir: string;
26
+ }
27
+ export interface StellarAgentConfig {
28
+ version: 1;
29
+ activeProfile: NetworkName;
30
+ profiles: Record<string, NetworkProfile>;
31
+ storage: StorageConfig;
32
+ output: {
33
+ color: boolean;
34
+ json: boolean;
35
+ redactSensitiveData: boolean;
36
+ };
37
+ }
38
+ export type CommandResult<T> = SuccessEnvelope<T> | ErrorEnvelope;
39
+ export interface SuccessEnvelope<T> {
40
+ ok: true;
41
+ data: T;
42
+ }
43
+ export interface ErrorEnvelope {
44
+ ok: false;
45
+ error: SerializedError;
46
+ }
47
+ export interface SerializedError {
48
+ code: ErrorCode;
49
+ message: string;
50
+ hint?: string;
51
+ docs?: string;
52
+ details?: unknown;
53
+ }
54
+ export type ErrorCode = "CONFIG_NOT_FOUND" | "CONFIG_INVALID" | "PROFILE_NOT_FOUND" | "MAINNET_NOT_ENABLED" | "POLICY_INVALID" | "POLICY_DENIED" | "APPROVAL_REQUIRED" | "APPROVAL_DENIED" | "WALLET_NOT_FOUND" | "WALLET_INVALID" | "ACCOUNT_NOT_FOUND" | "SECRET_KEY_BLOCKED" | "FRIENDBOT_UNAVAILABLE" | "RPC_UNAVAILABLE" | "HORIZON_UNAVAILABLE" | "TRANSACTION_BUILD_FAILED" | "TRANSACTION_SUBMIT_FAILED" | "TRANSACTION_TIMEOUT" | "LEDGER_LOOKUP_FAILED" | "X402_NOT_IMPLEMENTED" | "X402_RESOURCE_UNAVAILABLE" | "MPP_NOT_IMPLEMENTED" | "MPP_RESOURCE_UNAVAILABLE" | "FREIGHTER_NOT_IMPLEMENTED" | "STELLAR_CLI_UNAVAILABLE" | "INVALID_AMOUNT" | "INVALID_ASSET" | "INVALID_INPUT" | "NOT_IMPLEMENTED" | "UNKNOWN_ERROR";
55
+ export declare const EXIT_CODES: {
56
+ readonly success: 0;
57
+ readonly general: 1;
58
+ readonly usage: 2;
59
+ readonly validation: 3;
60
+ readonly policyDenied: 4;
61
+ readonly approval: 5;
62
+ readonly network: 6;
63
+ readonly transaction: 7;
64
+ readonly notImplemented: 8;
65
+ };
66
+ export declare class StellarAgentError extends Error {
67
+ readonly code: ErrorCode;
68
+ readonly hint: string | undefined;
69
+ readonly docs: string | undefined;
70
+ readonly details: unknown;
71
+ readonly exitCode: number;
72
+ constructor(args: {
73
+ code: ErrorCode;
74
+ message: string;
75
+ hint?: string;
76
+ docs?: string;
77
+ details?: unknown;
78
+ exitCode?: number;
79
+ });
80
+ }
81
+ export declare function exitCodeForError(code: ErrorCode): number;
82
+ export declare function ok<T>(data: T): SuccessEnvelope<T>;
83
+ export declare function fail(error: StellarAgentError | SerializedError): ErrorEnvelope;
84
+ export declare function serializeError(error: unknown): SerializedError;
85
+ export type NativeAsset = {
86
+ kind: "native";
87
+ code: "XLM";
88
+ };
89
+ export type IssuedAsset = {
90
+ kind: "issued";
91
+ code: string;
92
+ issuer: string;
93
+ };
94
+ export type StellarAsset = NativeAsset | IssuedAsset;
95
+ export declare function parseAsset(input: string): StellarAsset;
96
+ export declare function assetToString(asset: StellarAsset): string;
97
+ export interface ParsedAmount {
98
+ asset: string;
99
+ value: string;
100
+ stroops: bigint;
101
+ }
102
+ export declare function parseAmount(input: string, asset?: string): ParsedAmount;
103
+ export declare function formatStroops(stroops: bigint): string;
104
+ export declare function compareAmount(a: string, b: string): -1 | 0 | 1;
105
+ export declare function amountIsGreaterThan(a: string, b: string): boolean;
106
+ export declare function expandHome(pathValue: string): string;
107
+ export declare function resolvePath(pathValue: string, baseDir?: string): string;
108
+ export declare function defaultStorage(rootDir?: string): StorageConfig;
109
+ export declare const TESTNET_PROFILE: NetworkProfile;
110
+ export declare const MAINNET_PROFILE: NetworkProfile;
111
+ export declare function createDefaultConfig(rootDir?: string): StellarAgentConfig;
112
+ export declare const networkProfileSchema: z.ZodObject<{
113
+ name: z.ZodEnum<["testnet", "mainnet", "local"]>;
114
+ network: z.ZodEnum<["testnet", "public", "local"]>;
115
+ networkPassphrase: z.ZodString;
116
+ horizonUrl: z.ZodNullable<z.ZodString>;
117
+ rpcUrl: z.ZodNullable<z.ZodString>;
118
+ friendbotUrl: z.ZodNullable<z.ZodString>;
119
+ defaultAsset: z.ZodLiteral<"XLM">;
120
+ enabled: z.ZodOptional<z.ZodBoolean>;
121
+ requiresExplicitApproval: z.ZodOptional<z.ZodBoolean>;
122
+ realFunds: z.ZodBoolean;
123
+ }, "strip", z.ZodTypeAny, {
124
+ name: "testnet" | "mainnet" | "local";
125
+ network: "testnet" | "local" | "public";
126
+ networkPassphrase: string;
127
+ horizonUrl: string | null;
128
+ rpcUrl: string | null;
129
+ friendbotUrl: string | null;
130
+ defaultAsset: "XLM";
131
+ realFunds: boolean;
132
+ enabled?: boolean | undefined;
133
+ requiresExplicitApproval?: boolean | undefined;
134
+ }, {
135
+ name: "testnet" | "mainnet" | "local";
136
+ network: "testnet" | "local" | "public";
137
+ networkPassphrase: string;
138
+ horizonUrl: string | null;
139
+ rpcUrl: string | null;
140
+ friendbotUrl: string | null;
141
+ defaultAsset: "XLM";
142
+ realFunds: boolean;
143
+ enabled?: boolean | undefined;
144
+ requiresExplicitApproval?: boolean | undefined;
145
+ }>;
146
+ export declare const storageConfigSchema: z.ZodObject<{
147
+ rootDir: z.ZodString;
148
+ receiptsDir: z.ZodString;
149
+ ledgersDir: z.ZodString;
150
+ logsDir: z.ZodString;
151
+ walletsDir: z.ZodString;
152
+ policiesDir: z.ZodString;
153
+ approvalsDir: z.ZodString;
154
+ scenariosDir: z.ZodString;
155
+ }, "strip", z.ZodTypeAny, {
156
+ rootDir: string;
157
+ receiptsDir: string;
158
+ ledgersDir: string;
159
+ logsDir: string;
160
+ walletsDir: string;
161
+ policiesDir: string;
162
+ approvalsDir: string;
163
+ scenariosDir: string;
164
+ }, {
165
+ rootDir: string;
166
+ receiptsDir: string;
167
+ ledgersDir: string;
168
+ logsDir: string;
169
+ walletsDir: string;
170
+ policiesDir: string;
171
+ approvalsDir: string;
172
+ scenariosDir: string;
173
+ }>;
174
+ export declare const configSchema: z.ZodObject<{
175
+ version: z.ZodLiteral<1>;
176
+ activeProfile: z.ZodEnum<["testnet", "mainnet", "local"]>;
177
+ profiles: z.ZodRecord<z.ZodString, z.ZodObject<{
178
+ name: z.ZodEnum<["testnet", "mainnet", "local"]>;
179
+ network: z.ZodEnum<["testnet", "public", "local"]>;
180
+ networkPassphrase: z.ZodString;
181
+ horizonUrl: z.ZodNullable<z.ZodString>;
182
+ rpcUrl: z.ZodNullable<z.ZodString>;
183
+ friendbotUrl: z.ZodNullable<z.ZodString>;
184
+ defaultAsset: z.ZodLiteral<"XLM">;
185
+ enabled: z.ZodOptional<z.ZodBoolean>;
186
+ requiresExplicitApproval: z.ZodOptional<z.ZodBoolean>;
187
+ realFunds: z.ZodBoolean;
188
+ }, "strip", z.ZodTypeAny, {
189
+ name: "testnet" | "mainnet" | "local";
190
+ network: "testnet" | "local" | "public";
191
+ networkPassphrase: string;
192
+ horizonUrl: string | null;
193
+ rpcUrl: string | null;
194
+ friendbotUrl: string | null;
195
+ defaultAsset: "XLM";
196
+ realFunds: boolean;
197
+ enabled?: boolean | undefined;
198
+ requiresExplicitApproval?: boolean | undefined;
199
+ }, {
200
+ name: "testnet" | "mainnet" | "local";
201
+ network: "testnet" | "local" | "public";
202
+ networkPassphrase: string;
203
+ horizonUrl: string | null;
204
+ rpcUrl: string | null;
205
+ friendbotUrl: string | null;
206
+ defaultAsset: "XLM";
207
+ realFunds: boolean;
208
+ enabled?: boolean | undefined;
209
+ requiresExplicitApproval?: boolean | undefined;
210
+ }>>;
211
+ storage: z.ZodObject<{
212
+ rootDir: z.ZodString;
213
+ receiptsDir: z.ZodString;
214
+ ledgersDir: z.ZodString;
215
+ logsDir: z.ZodString;
216
+ walletsDir: z.ZodString;
217
+ policiesDir: z.ZodString;
218
+ approvalsDir: z.ZodString;
219
+ scenariosDir: z.ZodString;
220
+ }, "strip", z.ZodTypeAny, {
221
+ rootDir: string;
222
+ receiptsDir: string;
223
+ ledgersDir: string;
224
+ logsDir: string;
225
+ walletsDir: string;
226
+ policiesDir: string;
227
+ approvalsDir: string;
228
+ scenariosDir: string;
229
+ }, {
230
+ rootDir: string;
231
+ receiptsDir: string;
232
+ ledgersDir: string;
233
+ logsDir: string;
234
+ walletsDir: string;
235
+ policiesDir: string;
236
+ approvalsDir: string;
237
+ scenariosDir: string;
238
+ }>;
239
+ output: z.ZodObject<{
240
+ color: z.ZodBoolean;
241
+ json: z.ZodBoolean;
242
+ redactSensitiveData: z.ZodBoolean;
243
+ }, "strip", z.ZodTypeAny, {
244
+ color: boolean;
245
+ json: boolean;
246
+ redactSensitiveData: boolean;
247
+ }, {
248
+ color: boolean;
249
+ json: boolean;
250
+ redactSensitiveData: boolean;
251
+ }>;
252
+ }, "strip", z.ZodTypeAny, {
253
+ version: 1;
254
+ activeProfile: "testnet" | "mainnet" | "local";
255
+ profiles: Record<string, {
256
+ name: "testnet" | "mainnet" | "local";
257
+ network: "testnet" | "local" | "public";
258
+ networkPassphrase: string;
259
+ horizonUrl: string | null;
260
+ rpcUrl: string | null;
261
+ friendbotUrl: string | null;
262
+ defaultAsset: "XLM";
263
+ realFunds: boolean;
264
+ enabled?: boolean | undefined;
265
+ requiresExplicitApproval?: boolean | undefined;
266
+ }>;
267
+ storage: {
268
+ rootDir: string;
269
+ receiptsDir: string;
270
+ ledgersDir: string;
271
+ logsDir: string;
272
+ walletsDir: string;
273
+ policiesDir: string;
274
+ approvalsDir: string;
275
+ scenariosDir: string;
276
+ };
277
+ output: {
278
+ color: boolean;
279
+ json: boolean;
280
+ redactSensitiveData: boolean;
281
+ };
282
+ }, {
283
+ version: 1;
284
+ activeProfile: "testnet" | "mainnet" | "local";
285
+ profiles: Record<string, {
286
+ name: "testnet" | "mainnet" | "local";
287
+ network: "testnet" | "local" | "public";
288
+ networkPassphrase: string;
289
+ horizonUrl: string | null;
290
+ rpcUrl: string | null;
291
+ friendbotUrl: string | null;
292
+ defaultAsset: "XLM";
293
+ realFunds: boolean;
294
+ enabled?: boolean | undefined;
295
+ requiresExplicitApproval?: boolean | undefined;
296
+ }>;
297
+ storage: {
298
+ rootDir: string;
299
+ receiptsDir: string;
300
+ ledgersDir: string;
301
+ logsDir: string;
302
+ walletsDir: string;
303
+ policiesDir: string;
304
+ approvalsDir: string;
305
+ scenariosDir: string;
306
+ };
307
+ output: {
308
+ color: boolean;
309
+ json: boolean;
310
+ redactSensitiveData: boolean;
311
+ };
312
+ }>;
313
+ export declare const testnetWalletSchema: z.ZodObject<{
314
+ schemaVersion: z.ZodLiteral<"stellar-agent.wallet.v1">;
315
+ name: z.ZodString;
316
+ network: z.ZodLiteral<"testnet">;
317
+ publicKey: z.ZodString;
318
+ secretKey: z.ZodString;
319
+ createdAt: z.ZodString;
320
+ source: z.ZodLiteral<"generated-testnet">;
321
+ }, "strip", z.ZodTypeAny, {
322
+ name: string;
323
+ network: "testnet";
324
+ schemaVersion: "stellar-agent.wallet.v1";
325
+ publicKey: string;
326
+ secretKey: string;
327
+ createdAt: string;
328
+ source: "generated-testnet";
329
+ }, {
330
+ name: string;
331
+ network: "testnet";
332
+ schemaVersion: "stellar-agent.wallet.v1";
333
+ publicKey: string;
334
+ secretKey: string;
335
+ createdAt: string;
336
+ source: "generated-testnet";
337
+ }>;
338
+ export type TestnetWallet = z.infer<typeof testnetWalletSchema>;
339
+ export declare const publicWalletSchema: z.ZodObject<{
340
+ schemaVersion: z.ZodLiteral<"stellar-agent.publicWallet.v1">;
341
+ name: z.ZodString;
342
+ network: z.ZodEnum<["testnet", "mainnet", "local"]>;
343
+ publicKey: z.ZodString;
344
+ importedAt: z.ZodString;
345
+ source: z.ZodLiteral<"watch-only">;
346
+ }, "strip", z.ZodTypeAny, {
347
+ name: string;
348
+ network: "testnet" | "mainnet" | "local";
349
+ schemaVersion: "stellar-agent.publicWallet.v1";
350
+ publicKey: string;
351
+ source: "watch-only";
352
+ importedAt: string;
353
+ }, {
354
+ name: string;
355
+ network: "testnet" | "mainnet" | "local";
356
+ schemaVersion: "stellar-agent.publicWallet.v1";
357
+ publicKey: string;
358
+ source: "watch-only";
359
+ importedAt: string;
360
+ }>;
361
+ export type PublicWallet = z.infer<typeof publicWalletSchema>;
362
+ export type WalletPublicView = Omit<TestnetWallet, "secretKey"> & {
363
+ hasSecret: true;
364
+ source: "generated-testnet";
365
+ } | (PublicWallet & {
366
+ hasSecret: false;
367
+ });
368
+ export declare const paymentRequestSchema: z.ZodObject<{
369
+ source: z.ZodOptional<z.ZodString>;
370
+ destination: z.ZodString;
371
+ amount: z.ZodString;
372
+ asset: z.ZodDefault<z.ZodString>;
373
+ memo: z.ZodOptional<z.ZodString>;
374
+ network: z.ZodDefault<z.ZodEnum<["testnet", "mainnet", "local"]>>;
375
+ domain: z.ZodOptional<z.ZodString>;
376
+ url: z.ZodOptional<z.ZodString>;
377
+ }, "strip", z.ZodTypeAny, {
378
+ network: "testnet" | "mainnet" | "local";
379
+ destination: string;
380
+ amount: string;
381
+ asset: string;
382
+ source?: string | undefined;
383
+ memo?: string | undefined;
384
+ domain?: string | undefined;
385
+ url?: string | undefined;
386
+ }, {
387
+ destination: string;
388
+ amount: string;
389
+ network?: "testnet" | "mainnet" | "local" | undefined;
390
+ source?: string | undefined;
391
+ asset?: string | undefined;
392
+ memo?: string | undefined;
393
+ domain?: string | undefined;
394
+ url?: string | undefined;
395
+ }>;
396
+ export type PaymentRequest = z.infer<typeof paymentRequestSchema>;
397
+ export declare function redactSensitive<T>(value: T): T;
398
+ export declare function redactWallet(wallet: TestnetWallet): Omit<TestnetWallet, "secretKey"> & {
399
+ secretKey: "[REDACTED]";
400
+ };
401
+ export declare function nowIso(): string;
402
+ export declare function makeId(prefix: string): string;
403
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,395 @@
1
+ import { homedir } from "node:os";
2
+ import { isAbsolute, resolve } from "node:path";
3
+ import { z } from "zod";
4
+ export const XLM_DECIMALS = 7;
5
+ export const STROOPS_PER_XLM = 10000000n;
6
+ export const EXIT_CODES = {
7
+ success: 0,
8
+ general: 1,
9
+ usage: 2,
10
+ validation: 3,
11
+ policyDenied: 4,
12
+ approval: 5,
13
+ network: 6,
14
+ transaction: 7,
15
+ notImplemented: 8
16
+ };
17
+ export class StellarAgentError extends Error {
18
+ code;
19
+ hint;
20
+ docs;
21
+ details;
22
+ exitCode;
23
+ constructor(args) {
24
+ super(args.message);
25
+ this.name = "StellarAgentError";
26
+ this.code = args.code;
27
+ this.hint = args.hint;
28
+ this.docs = args.docs;
29
+ this.details = args.details;
30
+ this.exitCode = args.exitCode ?? exitCodeForError(args.code);
31
+ }
32
+ }
33
+ export function exitCodeForError(code) {
34
+ if (code === "POLICY_DENIED")
35
+ return EXIT_CODES.policyDenied;
36
+ if (code === "APPROVAL_REQUIRED" || code === "APPROVAL_DENIED")
37
+ return EXIT_CODES.approval;
38
+ if (code === "CONFIG_INVALID" || code === "POLICY_INVALID")
39
+ return EXIT_CODES.validation;
40
+ if (code === "CONFIG_NOT_FOUND" || code === "PROFILE_NOT_FOUND" || code === "INVALID_INPUT" || code === "ACCOUNT_NOT_FOUND") {
41
+ return EXIT_CODES.usage;
42
+ }
43
+ if (code.includes("UNAVAILABLE"))
44
+ return EXIT_CODES.network;
45
+ if (code.startsWith("TRANSACTION_"))
46
+ return EXIT_CODES.transaction;
47
+ if (code.includes("NOT_IMPLEMENTED"))
48
+ return EXIT_CODES.notImplemented;
49
+ return EXIT_CODES.general;
50
+ }
51
+ export function ok(data) {
52
+ return { ok: true, data };
53
+ }
54
+ export function fail(error) {
55
+ return {
56
+ ok: false,
57
+ error: error instanceof StellarAgentError ? serializeError(error) : error
58
+ };
59
+ }
60
+ export function serializeError(error) {
61
+ if (error instanceof StellarAgentError) {
62
+ return {
63
+ code: error.code,
64
+ message: error.message,
65
+ hint: error.hint ?? defaultHintForError(error.code),
66
+ docs: error.docs ?? defaultDocsForError(error.code),
67
+ ...(error.details !== undefined ? { details: redactSensitive(error.details) } : {})
68
+ };
69
+ }
70
+ if (error instanceof Error) {
71
+ return {
72
+ code: "UNKNOWN_ERROR",
73
+ message: error.message,
74
+ hint: defaultHintForError("UNKNOWN_ERROR"),
75
+ docs: defaultDocsForError("UNKNOWN_ERROR")
76
+ };
77
+ }
78
+ return {
79
+ code: "UNKNOWN_ERROR",
80
+ message: "Unknown error.",
81
+ hint: defaultHintForError("UNKNOWN_ERROR"),
82
+ docs: defaultDocsForError("UNKNOWN_ERROR"),
83
+ details: redactSensitive(error)
84
+ };
85
+ }
86
+ function defaultHintForError(code) {
87
+ if (code === "POLICY_DENIED")
88
+ return "Run stellar-agent policy explain to inspect the matched rules.";
89
+ if (code === "APPROVAL_REQUIRED" || code === "APPROVAL_DENIED")
90
+ return "Use the local approval flow or adjust the request.";
91
+ if (code === "MAINNET_NOT_ENABLED")
92
+ return "Run stellar-agent mainnet status and use guarded Mainnet flows only when intended.";
93
+ if (code === "CONFIG_NOT_FOUND" || code === "CONFIG_INVALID")
94
+ return "Run stellar-agent testnet init or pass --config with a valid config file.";
95
+ if (code === "POLICY_INVALID")
96
+ return "Run stellar-agent policy check to inspect the policy file.";
97
+ if (code === "WALLET_NOT_FOUND" || code === "WALLET_INVALID")
98
+ return "Run stellar-agent wallet list or create/import the wallet first.";
99
+ if (code.includes("UNAVAILABLE"))
100
+ return "Check network access and run stellar-agent testnet doctor --live.";
101
+ if (code.startsWith("TRANSACTION_"))
102
+ return "Check wallet funding, fee strategy, destination, and the transaction hash before retrying.";
103
+ if (code === "INVALID_AMOUNT")
104
+ return "Use a positive decimal string with at most 7 decimal places.";
105
+ if (code === "INVALID_ASSET")
106
+ return "Use XLM or CODE:G... issuer asset format.";
107
+ if (code === "INVALID_INPUT")
108
+ return "Run the command with --help and correct the input.";
109
+ if (code.includes("NOT_IMPLEMENTED"))
110
+ return "Use the documented Testnet-supported commands for this release.";
111
+ return "Rerun with --verbose for more context and check docs/troubleshooting.md.";
112
+ }
113
+ function defaultDocsForError(code) {
114
+ if (code === "POLICY_DENIED")
115
+ return "docs/troubleshooting.md#policy-denied";
116
+ if (code === "APPROVAL_REQUIRED" || code === "APPROVAL_DENIED")
117
+ return "docs/mainnet-safety.md#local-approval-bridge";
118
+ if (code === "MAINNET_NOT_ENABLED")
119
+ return "docs/troubleshooting.md#mainnet-disabled";
120
+ if (code === "CONFIG_NOT_FOUND" || code === "CONFIG_INVALID")
121
+ return "docs/troubleshooting.md#invalid-wallet";
122
+ if (code === "POLICY_INVALID")
123
+ return "docs/troubleshooting.md#policy-denied";
124
+ if (code === "WALLET_NOT_FOUND" || code === "WALLET_INVALID")
125
+ return "docs/troubleshooting.md#invalid-wallet";
126
+ if (code.includes("UNAVAILABLE"))
127
+ return "docs/troubleshooting.md#rpc-or-horizon-unavailable";
128
+ if (code.startsWith("TRANSACTION_"))
129
+ return "docs/troubleshooting.md#transaction-timeout";
130
+ if (code === "INVALID_AMOUNT" || code === "INVALID_ASSET" || code === "INVALID_INPUT")
131
+ return "docs/troubleshooting.md";
132
+ if (code.includes("NOT_IMPLEMENTED"))
133
+ return "docs/quickstart-testnet.md";
134
+ return "docs/troubleshooting.md";
135
+ }
136
+ const gAddressPattern = /^G[A-Z2-7]{55}$/;
137
+ const sSecretPattern = /^S[A-Z2-7]{55}$/;
138
+ export function parseAsset(input) {
139
+ const value = input.trim().toUpperCase();
140
+ if (value === "XLM")
141
+ return { kind: "native", code: "XLM" };
142
+ const [code, issuer, extra] = value.split(":");
143
+ if (!code || !issuer || extra !== undefined || !/^[A-Z0-9]{1,12}$/.test(code)) {
144
+ throw new StellarAgentError({
145
+ code: "INVALID_ASSET",
146
+ message: "Asset must be XLM or CODE:G... issuer format.",
147
+ exitCode: EXIT_CODES.usage
148
+ });
149
+ }
150
+ if (!gAddressPattern.test(issuer)) {
151
+ throw new StellarAgentError({
152
+ code: "INVALID_ASSET",
153
+ message: "Issued asset issuer must be a Stellar public key.",
154
+ exitCode: EXIT_CODES.usage
155
+ });
156
+ }
157
+ return { kind: "issued", code, issuer };
158
+ }
159
+ export function assetToString(asset) {
160
+ return asset.kind === "native" ? "XLM" : `${asset.code}:${asset.issuer}`;
161
+ }
162
+ export function parseAmount(input, asset = "XLM") {
163
+ const trimmed = input.trim();
164
+ if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(trimmed)) {
165
+ throw new StellarAgentError({
166
+ code: "INVALID_AMOUNT",
167
+ message: "Amount must be a positive decimal string.",
168
+ exitCode: EXIT_CODES.usage
169
+ });
170
+ }
171
+ const [wholeRaw, fractionRaw = ""] = trimmed.split(".");
172
+ if (fractionRaw.length > XLM_DECIMALS) {
173
+ throw new StellarAgentError({
174
+ code: "INVALID_AMOUNT",
175
+ message: "Stellar amounts support at most 7 decimal places.",
176
+ exitCode: EXIT_CODES.usage
177
+ });
178
+ }
179
+ const whole = BigInt(wholeRaw ?? "0");
180
+ const fraction = BigInt(fractionRaw.padEnd(XLM_DECIMALS, "0"));
181
+ const stroops = whole * STROOPS_PER_XLM + fraction;
182
+ if (stroops <= 0n) {
183
+ throw new StellarAgentError({
184
+ code: "INVALID_AMOUNT",
185
+ message: "Amount must be greater than zero.",
186
+ exitCode: EXIT_CODES.usage
187
+ });
188
+ }
189
+ return { asset, value: formatStroops(stroops), stroops };
190
+ }
191
+ export function formatStroops(stroops) {
192
+ const whole = stroops / STROOPS_PER_XLM;
193
+ const fraction = (stroops % STROOPS_PER_XLM).toString().padStart(XLM_DECIMALS, "0");
194
+ return `${whole}.${fraction}`;
195
+ }
196
+ export function compareAmount(a, b) {
197
+ const left = parseComparableAmount(a);
198
+ const right = parseComparableAmount(b);
199
+ if (left < right)
200
+ return -1;
201
+ if (left > right)
202
+ return 1;
203
+ return 0;
204
+ }
205
+ export function amountIsGreaterThan(a, b) {
206
+ return compareAmount(a, b) === 1;
207
+ }
208
+ function parseComparableAmount(input) {
209
+ const trimmed = input.trim();
210
+ if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(trimmed)) {
211
+ throw new StellarAgentError({
212
+ code: "INVALID_AMOUNT",
213
+ message: "Amount must be a decimal string.",
214
+ exitCode: EXIT_CODES.usage
215
+ });
216
+ }
217
+ const [wholeRaw, fractionRaw = ""] = trimmed.split(".");
218
+ if (fractionRaw.length > XLM_DECIMALS) {
219
+ throw new StellarAgentError({
220
+ code: "INVALID_AMOUNT",
221
+ message: "Stellar amounts support at most 7 decimal places.",
222
+ exitCode: EXIT_CODES.usage
223
+ });
224
+ }
225
+ return BigInt(wholeRaw ?? "0") * STROOPS_PER_XLM + BigInt(fractionRaw.padEnd(XLM_DECIMALS, "0"));
226
+ }
227
+ export function expandHome(pathValue) {
228
+ if (pathValue === "~")
229
+ return homedir();
230
+ if (pathValue.startsWith("~/"))
231
+ return resolve(homedir(), pathValue.slice(2));
232
+ return pathValue;
233
+ }
234
+ export function resolvePath(pathValue, baseDir = process.cwd()) {
235
+ const expanded = expandHome(pathValue);
236
+ return isAbsolute(expanded) ? expanded : resolve(baseDir, expanded);
237
+ }
238
+ export function defaultStorage(rootDir = "~/.stellar-agent") {
239
+ return {
240
+ rootDir,
241
+ receiptsDir: `${rootDir}/receipts`,
242
+ ledgersDir: `${rootDir}/ledgers`,
243
+ logsDir: `${rootDir}/logs`,
244
+ walletsDir: `${rootDir}/wallets`,
245
+ policiesDir: `${rootDir}/policies`,
246
+ approvalsDir: `${rootDir}/approvals`,
247
+ scenariosDir: `${rootDir}/scenarios`
248
+ };
249
+ }
250
+ export const TESTNET_PROFILE = {
251
+ name: "testnet",
252
+ network: "testnet",
253
+ networkPassphrase: "Test SDF Network ; September 2015",
254
+ horizonUrl: "https://horizon-testnet.stellar.org",
255
+ rpcUrl: "https://soroban-testnet.stellar.org",
256
+ friendbotUrl: "https://friendbot.stellar.org",
257
+ defaultAsset: "XLM",
258
+ realFunds: false
259
+ };
260
+ export const MAINNET_PROFILE = {
261
+ name: "mainnet",
262
+ network: "public",
263
+ networkPassphrase: "Public Global Stellar Network ; September 2015",
264
+ horizonUrl: "https://horizon.stellar.org",
265
+ rpcUrl: null,
266
+ friendbotUrl: null,
267
+ defaultAsset: "XLM",
268
+ enabled: false,
269
+ requiresExplicitApproval: true,
270
+ realFunds: true
271
+ };
272
+ export function createDefaultConfig(rootDir = process.env.STELLAR_AGENT_HOME ?? "~/.stellar-agent") {
273
+ return {
274
+ version: 1,
275
+ activeProfile: "testnet",
276
+ profiles: {
277
+ testnet: TESTNET_PROFILE,
278
+ mainnet: MAINNET_PROFILE
279
+ },
280
+ storage: defaultStorage(rootDir),
281
+ output: {
282
+ color: true,
283
+ json: false,
284
+ redactSensitiveData: true
285
+ }
286
+ };
287
+ }
288
+ export const networkProfileSchema = z.object({
289
+ name: z.enum(["testnet", "mainnet", "local"]),
290
+ network: z.enum(["testnet", "public", "local"]),
291
+ networkPassphrase: z.string().min(1),
292
+ horizonUrl: z.string().url().nullable(),
293
+ rpcUrl: z.string().url().nullable(),
294
+ friendbotUrl: z.string().url().nullable(),
295
+ defaultAsset: z.literal("XLM"),
296
+ enabled: z.boolean().optional(),
297
+ requiresExplicitApproval: z.boolean().optional(),
298
+ realFunds: z.boolean()
299
+ });
300
+ export const storageConfigSchema = z.object({
301
+ rootDir: z.string().min(1),
302
+ receiptsDir: z.string().min(1),
303
+ ledgersDir: z.string().min(1),
304
+ logsDir: z.string().min(1),
305
+ walletsDir: z.string().min(1),
306
+ policiesDir: z.string().min(1),
307
+ approvalsDir: z.string().min(1),
308
+ scenariosDir: z.string().min(1)
309
+ });
310
+ export const configSchema = z.object({
311
+ version: z.literal(1),
312
+ activeProfile: z.enum(["testnet", "mainnet", "local"]),
313
+ profiles: z.record(networkProfileSchema),
314
+ storage: storageConfigSchema,
315
+ output: z.object({
316
+ color: z.boolean(),
317
+ json: z.boolean(),
318
+ redactSensitiveData: z.boolean()
319
+ })
320
+ });
321
+ export const testnetWalletSchema = z.object({
322
+ schemaVersion: z.literal("stellar-agent.wallet.v1"),
323
+ name: z.string().min(1),
324
+ network: z.literal("testnet"),
325
+ publicKey: z.string().regex(gAddressPattern),
326
+ secretKey: z.string().regex(sSecretPattern),
327
+ createdAt: z.string().datetime(),
328
+ source: z.literal("generated-testnet")
329
+ });
330
+ export const publicWalletSchema = z.object({
331
+ schemaVersion: z.literal("stellar-agent.publicWallet.v1"),
332
+ name: z.string().min(1),
333
+ network: z.enum(["testnet", "mainnet", "local"]),
334
+ publicKey: z.string().regex(gAddressPattern),
335
+ importedAt: z.string().datetime(),
336
+ source: z.literal("watch-only")
337
+ });
338
+ export const paymentRequestSchema = z.object({
339
+ source: z.string().optional(),
340
+ destination: z.string().regex(gAddressPattern),
341
+ amount: z.string().min(1),
342
+ asset: z.string().default("XLM"),
343
+ memo: z.string().max(28).optional(),
344
+ network: z.enum(["testnet", "mainnet", "local"]).default("testnet"),
345
+ domain: z.string().optional(),
346
+ url: z.string().url().optional()
347
+ });
348
+ const sensitiveKeyPattern = /secret|private|seed|password|api[_-]?key|token/i;
349
+ const secretLikePattern = /\bS[A-Z2-7]{55}\b/g;
350
+ const urlWithQueryPattern = /(https?:\/\/[^\s?#]+)\?([^\s]+)/g;
351
+ const publicTokenMetricKeys = new Set([
352
+ "expectedTokens",
353
+ "bTokens",
354
+ "dTokens",
355
+ "supplyBTokens",
356
+ "collateralBTokens",
357
+ "liabilityDTokens",
358
+ "claimedTokens"
359
+ ]);
360
+ export function redactSensitive(value) {
361
+ if (value === null || value === undefined)
362
+ return value;
363
+ if (typeof value === "string") {
364
+ return value
365
+ .replace(secretLikePattern, "[REDACTED_SECRET_KEY]")
366
+ .replace(urlWithQueryPattern, "$1?[REDACTED_QUERY]");
367
+ }
368
+ if (Array.isArray(value))
369
+ return value.map((item) => redactSensitive(item));
370
+ if (typeof value === "object") {
371
+ const redacted = {};
372
+ for (const [key, child] of Object.entries(value)) {
373
+ redacted[key] =
374
+ key === "secretKeysIncluded" || key === "hasSecret"
375
+ ? child
376
+ : sensitiveKeyPattern.test(key) && !publicTokenMetricKeys.has(key)
377
+ ? "[REDACTED]"
378
+ : redactSensitive(child);
379
+ }
380
+ return redacted;
381
+ }
382
+ return value;
383
+ }
384
+ export function redactWallet(wallet) {
385
+ return { ...wallet, secretKey: "[REDACTED]" };
386
+ }
387
+ export function nowIso() {
388
+ return new Date().toISOString();
389
+ }
390
+ export function makeId(prefix) {
391
+ const stamp = new Date().toISOString().replace(/[-:.TZ]/g, "").slice(0, 14);
392
+ const random = Math.random().toString(36).slice(2, 8);
393
+ return `${prefix}_${stamp}_${random}`;
394
+ }
395
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@stellar-agent/core",
3
+ "version": "0.4.0",
4
+ "description": "Core types, configuration, amount parsing, errors, and redaction for Stellar Agent Bridge.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com/someone-in-texas/Stellar-Agent.git",
10
+ "directory": "packages/core"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/someone-in-texas/Stellar-Agent/issues"
14
+ },
15
+ "homepage": "https://github.com/someone-in-texas/Stellar-Agent#readme",
16
+ "engines": {
17
+ "node": ">=22"
18
+ },
19
+ "main": "./dist/index.js",
20
+ "types": "./dist/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.ts",
24
+ "import": "./dist/index.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "scripts": {
31
+ "build": "tsc -b",
32
+ "test": "vitest run"
33
+ },
34
+ "dependencies": {
35
+ "zod": "^3.25.46"
36
+ }
37
+ }