@ampersend_ai/ampersend-sdk 0.0.11 → 0.0.13
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/dist/ampersend/approval.d.ts +52 -0
- package/dist/ampersend/approval.d.ts.map +1 -0
- package/dist/ampersend/approval.js +106 -0
- package/dist/ampersend/approval.js.map +1 -0
- package/dist/ampersend/index.d.ts +1 -0
- package/dist/ampersend/index.d.ts.map +1 -1
- package/dist/ampersend/index.js +1 -0
- package/dist/ampersend/index.js.map +1 -1
- package/dist/ampersend/management.d.ts +2 -2
- package/dist/ampersend/treasurer.d.ts +2 -1
- package/dist/ampersend/treasurer.d.ts.map +1 -1
- package/dist/ampersend/treasurer.js +16 -4
- package/dist/ampersend/treasurer.js.map +1 -1
- package/dist/ampersend/types.d.ts +207 -4
- package/dist/ampersend/types.d.ts.map +1 -1
- package/dist/ampersend/types.js +107 -2
- package/dist/ampersend/types.js.map +1 -1
- package/dist/cli/ampersend.js +2 -0
- package/dist/cli/ampersend.js.map +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +41 -35
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/fetch.js +6 -6
- package/dist/cli/commands/fetch.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +18 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +151 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/config.d.ts +62 -38
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +148 -110
- package/dist/cli/config.js.map +1 -1
- package/dist/smart-account/constants.d.ts +5 -0
- package/dist/smart-account/constants.d.ts.map +1 -1
- package/dist/smart-account/constants.js +5 -0
- package/dist/smart-account/constants.js.map +1 -1
- package/dist/smart-account/eip712-types.d.ts +27 -0
- package/dist/smart-account/eip712-types.d.ts.map +1 -0
- package/dist/smart-account/eip712-types.js +16 -0
- package/dist/smart-account/eip712-types.js.map +1 -0
- package/dist/smart-account/index.d.ts +2 -1
- package/dist/smart-account/index.d.ts.map +1 -1
- package/dist/smart-account/index.js +2 -1
- package/dist/smart-account/index.js.map +1 -1
- package/dist/smart-account/signing.d.ts.map +1 -1
- package/dist/smart-account/signing.js +2 -8
- package/dist/smart-account/signing.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/x402/index.d.ts +1 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js.map +1 -1
- package/dist/x402/types.d.ts +36 -0
- package/dist/x402/types.d.ts.map +1 -0
- package/dist/x402/types.js +9 -0
- package/dist/x402/types.js.map +1 -0
- package/dist/x402/wallet.d.ts +3 -1
- package/dist/x402/wallet.d.ts.map +1 -1
- package/dist/x402/wallet.js.map +1 -1
- package/dist/x402/wallets/account/wallet.d.ts +5 -3
- package/dist/x402/wallets/account/wallet.d.ts.map +1 -1
- package/dist/x402/wallets/account/wallet.js +2 -1
- package/dist/x402/wallets/account/wallet.js.map +1 -1
- package/dist/x402/wallets/index.d.ts +1 -0
- package/dist/x402/wallets/index.d.ts.map +1 -1
- package/dist/x402/wallets/index.js +1 -0
- package/dist/x402/wallets/index.js.map +1 -1
- package/dist/x402/wallets/smart-account/cosigned.d.ts +46 -0
- package/dist/x402/wallets/smart-account/cosigned.d.ts.map +1 -0
- package/dist/x402/wallets/smart-account/cosigned.js +90 -0
- package/dist/x402/wallets/smart-account/cosigned.js.map +1 -0
- package/dist/x402/wallets/smart-account/wallet.d.ts +8 -1
- package/dist/x402/wallets/smart-account/wallet.d.ts.map +1 -1
- package/dist/x402/wallets/smart-account/wallet.js +14 -3
- package/dist/x402/wallets/smart-account/wallet.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/config.d.ts
CHANGED
|
@@ -1,32 +1,43 @@
|
|
|
1
1
|
import { type ConfigStatus, type JsonEnvelope } from "./envelope.ts";
|
|
2
|
+
export declare const CONFIG_FILE: string;
|
|
2
3
|
export type { ConfigStatus };
|
|
3
4
|
/** Default API URL (production) */
|
|
4
5
|
export declare const DEFAULT_API_URL = "https://api.ampersend.ai";
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/** Pending approval stored in config */
|
|
7
|
+
export interface PendingApproval {
|
|
8
|
+
token: string;
|
|
9
|
+
agentKey: `0x${string}`;
|
|
10
|
+
expiresAt: string;
|
|
11
|
+
}
|
|
10
12
|
/** Stored configuration V1 */
|
|
11
13
|
export interface StoredConfigV1 {
|
|
12
14
|
version: 1;
|
|
13
|
-
agentKey
|
|
15
|
+
agentKey?: `0x${string}`;
|
|
14
16
|
agentAccount?: `0x${string}`;
|
|
15
17
|
apiUrl?: string;
|
|
18
|
+
pendingApproval?: PendingApproval;
|
|
16
19
|
}
|
|
17
20
|
/** Current stored config type */
|
|
18
21
|
export type StoredConfig = StoredConfigV1;
|
|
19
22
|
/** Runtime configuration with derived fields */
|
|
20
|
-
export interface RuntimeConfig
|
|
21
|
-
|
|
23
|
+
export interface RuntimeConfig {
|
|
24
|
+
agentKey?: `0x${string}`;
|
|
25
|
+
agentAccount?: `0x${string}`;
|
|
26
|
+
apiUrl?: string;
|
|
27
|
+
pendingApproval?: PendingApproval;
|
|
22
28
|
status: ConfigStatus;
|
|
23
29
|
}
|
|
24
30
|
/**
|
|
25
|
-
* Read config file if it exists
|
|
31
|
+
* Read config file if it exists.
|
|
32
|
+
* Returns null if the file is missing or corrupt.
|
|
26
33
|
*/
|
|
27
34
|
export declare function readConfig(): StoredConfig | null;
|
|
28
35
|
/**
|
|
29
|
-
*
|
|
36
|
+
* Write config file with secure permissions
|
|
37
|
+
*/
|
|
38
|
+
export declare function writeConfig(config: Omit<StoredConfig, "version">): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get runtime config with status
|
|
30
41
|
*/
|
|
31
42
|
export declare function getRuntimeConfig(): RuntimeConfig | null;
|
|
32
43
|
/**
|
|
@@ -34,53 +45,66 @@ export declare function getRuntimeConfig(): RuntimeConfig | null;
|
|
|
34
45
|
*/
|
|
35
46
|
export declare function getConfigStatus(): {
|
|
36
47
|
status: ConfigStatus;
|
|
37
|
-
agentKeyAddress?: `0x${string}`;
|
|
38
48
|
};
|
|
39
49
|
/**
|
|
40
|
-
*
|
|
50
|
+
* Check if a pending approval has expired locally.
|
|
41
51
|
*/
|
|
42
|
-
export declare function
|
|
43
|
-
agentKeyAddress: string;
|
|
44
|
-
status: ConfigStatus;
|
|
45
|
-
}>;
|
|
52
|
+
export declare function isPendingExpired(pending: PendingApproval): boolean;
|
|
46
53
|
/**
|
|
47
|
-
*
|
|
54
|
+
* Compute the expiration ISO string for a new approval (now + 30min).
|
|
48
55
|
*/
|
|
49
|
-
export declare function
|
|
50
|
-
|
|
56
|
+
export declare function computeApprovalExpiry(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Set active config directly using "agentKey:::agentAccount" format.
|
|
59
|
+
* Replaces the old `config init` + `config set-agent` flow.
|
|
60
|
+
*/
|
|
61
|
+
export declare function setConfig(secret: string): JsonEnvelope<{
|
|
51
62
|
agentKeyAddress: string;
|
|
52
63
|
agentAccount: string;
|
|
53
64
|
status: ConfigStatus;
|
|
54
65
|
}>;
|
|
55
66
|
/**
|
|
56
|
-
* Set API URL (
|
|
67
|
+
* Set API URL in config. Pass undefined to clear (revert to production default).
|
|
57
68
|
*/
|
|
58
|
-
export declare function setApiUrl(apiUrl: string): JsonEnvelope<{
|
|
69
|
+
export declare function setApiUrl(apiUrl: string | undefined): JsonEnvelope<{
|
|
59
70
|
apiUrl: string;
|
|
60
71
|
}>;
|
|
61
72
|
/**
|
|
62
|
-
*
|
|
73
|
+
* Store a pending approval in config.
|
|
74
|
+
* Called by `setup start`.
|
|
63
75
|
*/
|
|
64
|
-
export declare function
|
|
65
|
-
apiUrl: string;
|
|
66
|
-
}>;
|
|
67
|
-
/** Configuration source */
|
|
68
|
-
export type ConfigSource = "env" | "file" | "none";
|
|
69
|
-
/** Status output options */
|
|
70
|
-
export interface StatusOptions {
|
|
71
|
-
verbose?: boolean;
|
|
72
|
-
}
|
|
76
|
+
export declare function storePendingApproval(pending: PendingApproval): void;
|
|
73
77
|
/**
|
|
74
|
-
*
|
|
75
|
-
* Checks env vars first (takes precedence), then config file
|
|
76
|
-
* @param options.verbose - Include raw addresses in output
|
|
78
|
+
* Clear pending approval from config.
|
|
77
79
|
*/
|
|
78
|
-
export declare function
|
|
80
|
+
export declare function clearPendingApproval(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Promote a pending approval to active config.
|
|
83
|
+
* Called by `setup finish` when the approval is resolved.
|
|
84
|
+
*/
|
|
85
|
+
export declare function promotePending(agentAccount: `0x${string}`): JsonEnvelope<{
|
|
86
|
+
agentKeyAddress: string;
|
|
87
|
+
agentAccount: string;
|
|
79
88
|
status: ConfigStatus;
|
|
80
|
-
|
|
81
|
-
|
|
89
|
+
}>;
|
|
90
|
+
/** Configuration source */
|
|
91
|
+
export type CredentialSource = "env" | "file" | "none";
|
|
92
|
+
/** Data returned by getStatus */
|
|
93
|
+
export interface StatusData {
|
|
94
|
+
status: ConfigStatus;
|
|
95
|
+
credentialSource: CredentialSource;
|
|
96
|
+
configPath?: string;
|
|
82
97
|
agentKeyAddress?: string;
|
|
83
98
|
agentAccount?: string;
|
|
84
99
|
apiUrl?: string;
|
|
85
|
-
|
|
100
|
+
pendingApproval?: {
|
|
101
|
+
agentKeyAddress: string;
|
|
102
|
+
expired: boolean;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get current configuration status.
|
|
107
|
+
* Checks env vars first (takes precedence), then config file.
|
|
108
|
+
*/
|
|
109
|
+
export declare function getStatus(): JsonEnvelope<StatusData>;
|
|
86
110
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/config.js
CHANGED
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import { Schema } from "effect";
|
|
4
5
|
import { isAddress } from "viem";
|
|
5
|
-
import {
|
|
6
|
+
import { privateKeyToAddress } from "viem/accounts";
|
|
6
7
|
import { parseEnvConfig } from "../ampersend/env.js";
|
|
7
8
|
import { err, ok } from "./envelope.js";
|
|
8
9
|
/** Config directory and file paths */
|
|
9
10
|
const CONFIG_DIR = join(homedir(), ".ampersend");
|
|
10
|
-
const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
11
|
+
export const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
11
12
|
/** Current config version */
|
|
12
13
|
const CONFIG_VERSION = 1;
|
|
14
|
+
/** Hard-coded approval expiration: 30 minutes */
|
|
15
|
+
const APPROVAL_EXPIRY_MS = 30 * 60 * 1000;
|
|
13
16
|
/** Default API URL (production) */
|
|
14
17
|
export const DEFAULT_API_URL = "https://api.ampersend.ai";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
const HexString = Schema.TemplateLiteral(Schema.Literal("0x"), Schema.String);
|
|
19
|
+
/** Schema for validating stored config read from disk */
|
|
20
|
+
const StoredConfigSchema = Schema.Struct({
|
|
21
|
+
version: Schema.Literal(1),
|
|
22
|
+
agentKey: Schema.optional(HexString),
|
|
23
|
+
agentAccount: Schema.optional(HexString),
|
|
24
|
+
apiUrl: Schema.optional(Schema.String),
|
|
25
|
+
pendingApproval: Schema.optional(Schema.Struct({
|
|
26
|
+
token: Schema.String,
|
|
27
|
+
agentKey: HexString,
|
|
28
|
+
expiresAt: Schema.String,
|
|
29
|
+
})),
|
|
30
|
+
});
|
|
22
31
|
/**
|
|
23
32
|
* Ensure config directory exists with secure permissions
|
|
24
33
|
*/
|
|
@@ -28,32 +37,33 @@ function ensureConfigDir() {
|
|
|
28
37
|
}
|
|
29
38
|
}
|
|
30
39
|
/**
|
|
31
|
-
* Read config file if it exists
|
|
40
|
+
* Read config file if it exists.
|
|
41
|
+
* Returns null if the file is missing or corrupt.
|
|
32
42
|
*/
|
|
33
43
|
export function readConfig() {
|
|
34
44
|
if (!existsSync(CONFIG_FILE)) {
|
|
35
45
|
return null;
|
|
36
46
|
}
|
|
37
47
|
const content = readFileSync(CONFIG_FILE, "utf-8");
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
48
|
+
try {
|
|
49
|
+
const parsed = JSON.parse(content);
|
|
50
|
+
return Schema.decodeUnknownSync(StoredConfigSchema)(parsed);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Corrupt or unrecognised config — treat as absent so commands can re-initialise
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
46
56
|
}
|
|
47
57
|
/**
|
|
48
58
|
* Write config file with secure permissions
|
|
49
59
|
*/
|
|
50
|
-
function writeConfig(config) {
|
|
60
|
+
export function writeConfig(config) {
|
|
51
61
|
ensureConfigDir();
|
|
52
62
|
const withVersion = { version: CONFIG_VERSION, ...config };
|
|
53
63
|
writeFileSync(CONFIG_FILE, JSON.stringify(withVersion, null, 2), { mode: 0o600 });
|
|
54
64
|
}
|
|
55
65
|
/**
|
|
56
|
-
* Get runtime config with status
|
|
66
|
+
* Get runtime config with status
|
|
57
67
|
*/
|
|
58
68
|
export function getRuntimeConfig() {
|
|
59
69
|
const stored = readConfig();
|
|
@@ -61,13 +71,8 @@ export function getRuntimeConfig() {
|
|
|
61
71
|
return null;
|
|
62
72
|
}
|
|
63
73
|
const { version: _, ...rest } = stored;
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
...rest,
|
|
68
|
-
agentKeyAddress,
|
|
69
|
-
status,
|
|
70
|
-
};
|
|
74
|
+
const status = rest.agentKey && rest.agentAccount ? "ready" : "pending_agent";
|
|
75
|
+
return { ...rest, status };
|
|
71
76
|
}
|
|
72
77
|
/**
|
|
73
78
|
* Get configuration status for error messages
|
|
@@ -77,118 +82,143 @@ export function getConfigStatus() {
|
|
|
77
82
|
if (!config) {
|
|
78
83
|
return { status: "not_initialized" };
|
|
79
84
|
}
|
|
80
|
-
return { status: config.status
|
|
85
|
+
return { status: config.status };
|
|
81
86
|
}
|
|
82
87
|
/**
|
|
83
|
-
*
|
|
88
|
+
* Check if a pending approval has expired locally.
|
|
84
89
|
*/
|
|
85
|
-
export function
|
|
86
|
-
|
|
87
|
-
if (existing) {
|
|
88
|
-
const agentKeyAddress = privateKeyToAddress(existing.agentKey);
|
|
89
|
-
if (existing.agentAccount) {
|
|
90
|
-
return err("ALREADY_CONFIGURED", "Already configured. Use `ampersend config status` to view.", {
|
|
91
|
-
status: "ready",
|
|
92
|
-
agentKeyAddress,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
// Return existing pending config
|
|
96
|
-
return ok({ agentKeyAddress, status: "pending_agent" });
|
|
97
|
-
}
|
|
98
|
-
// Generate new agent key
|
|
99
|
-
const agentKey = generatePrivateKey();
|
|
100
|
-
const agentKeyAddress = privateKeyToAddress(agentKey);
|
|
101
|
-
writeConfig({ agentKey });
|
|
102
|
-
return ok({ agentKeyAddress, status: "pending_agent" });
|
|
90
|
+
export function isPendingExpired(pending) {
|
|
91
|
+
return new Date(pending.expiresAt).getTime() <= Date.now();
|
|
103
92
|
}
|
|
104
93
|
/**
|
|
105
|
-
*
|
|
94
|
+
* Compute the expiration ISO string for a new approval (now + 30min).
|
|
106
95
|
*/
|
|
107
|
-
export function
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
96
|
+
export function computeApprovalExpiry() {
|
|
97
|
+
return new Date(Date.now() + APPROVAL_EXPIRY_MS).toISOString();
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Set active config directly using "agentKey:::agentAccount" format.
|
|
101
|
+
* Replaces the old `config init` + `config set-agent` flow.
|
|
102
|
+
*/
|
|
103
|
+
export function setConfig(secret) {
|
|
104
|
+
const parts = secret.split(":::");
|
|
105
|
+
if (parts.length !== 2) {
|
|
106
|
+
return err("INVALID_FORMAT", 'Expected format: "agentKey:::agentAccount"');
|
|
107
|
+
}
|
|
108
|
+
const [agentKey, agentAccount] = parts;
|
|
109
|
+
if (!agentKey.startsWith("0x") || agentKey.length !== 66) {
|
|
110
|
+
return err("INVALID_KEY", "Agent key must be a 0x-prefixed 32-byte hex string (66 chars)");
|
|
111
111
|
}
|
|
112
|
-
// Validate address format using viem's isAddress (handles checksum validation)
|
|
113
112
|
if (!isAddress(agentAccount)) {
|
|
114
|
-
return err("INVALID_ADDRESS", "Invalid Ethereum address format
|
|
113
|
+
return err("INVALID_ADDRESS", "Invalid Ethereum address format for agent account");
|
|
115
114
|
}
|
|
116
|
-
const
|
|
115
|
+
const existing = readConfig();
|
|
117
116
|
writeConfig({
|
|
118
|
-
agentKey:
|
|
117
|
+
agentKey: agentKey,
|
|
119
118
|
agentAccount: agentAccount,
|
|
120
|
-
...(existing
|
|
119
|
+
...(existing?.apiUrl ? { apiUrl: existing.apiUrl } : {}),
|
|
120
|
+
// Preserve pending approval if any
|
|
121
|
+
...(existing?.pendingApproval ? { pendingApproval: existing.pendingApproval } : {}),
|
|
121
122
|
});
|
|
123
|
+
const agentKeyAddress = privateKeyToAddress(agentKey);
|
|
122
124
|
return ok({
|
|
123
|
-
configName: generateConfigName(agentKeyAddress, agentAccount),
|
|
124
125
|
agentKeyAddress,
|
|
125
126
|
agentAccount,
|
|
126
127
|
status: "ready",
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
130
|
/**
|
|
130
|
-
* Set API URL (
|
|
131
|
+
* Set API URL in config. Pass undefined to clear (revert to production default).
|
|
131
132
|
*/
|
|
132
133
|
export function setApiUrl(apiUrl) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
return err("INVALID_URL", "Invalid URL format.");
|
|
134
|
+
if (apiUrl != null) {
|
|
135
|
+
try {
|
|
136
|
+
new URL(apiUrl);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return err("INVALID_URL", "Invalid URL format.");
|
|
140
|
+
}
|
|
143
141
|
}
|
|
142
|
+
const existing = readConfig();
|
|
143
|
+
writeConfig({
|
|
144
|
+
...(existing?.agentKey ? { agentKey: existing.agentKey } : {}),
|
|
145
|
+
...(existing?.agentAccount ? { agentAccount: existing.agentAccount } : {}),
|
|
146
|
+
...(existing?.pendingApproval ? { pendingApproval: existing.pendingApproval } : {}),
|
|
147
|
+
...(apiUrl != null ? { apiUrl } : {}),
|
|
148
|
+
});
|
|
149
|
+
return ok({ apiUrl: apiUrl ?? DEFAULT_API_URL });
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Store a pending approval in config.
|
|
153
|
+
* Called by `setup start`.
|
|
154
|
+
*/
|
|
155
|
+
export function storePendingApproval(pending) {
|
|
156
|
+
const existing = readConfig();
|
|
144
157
|
writeConfig({
|
|
145
|
-
agentKey: existing.agentKey,
|
|
146
|
-
...(existing
|
|
147
|
-
apiUrl,
|
|
158
|
+
...(existing?.agentKey ? { agentKey: existing.agentKey } : {}),
|
|
159
|
+
...(existing?.agentAccount ? { agentAccount: existing.agentAccount } : {}),
|
|
160
|
+
...(existing?.apiUrl ? { apiUrl: existing.apiUrl } : {}),
|
|
161
|
+
pendingApproval: pending,
|
|
148
162
|
});
|
|
149
|
-
return ok({ apiUrl });
|
|
150
163
|
}
|
|
151
164
|
/**
|
|
152
|
-
* Clear
|
|
165
|
+
* Clear pending approval from config.
|
|
166
|
+
*/
|
|
167
|
+
export function clearPendingApproval() {
|
|
168
|
+
const existing = readConfig();
|
|
169
|
+
if (!existing)
|
|
170
|
+
return;
|
|
171
|
+
const { pendingApproval: _, version: __, ...rest } = existing;
|
|
172
|
+
writeConfig(rest);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Promote a pending approval to active config.
|
|
176
|
+
* Called by `setup finish` when the approval is resolved.
|
|
153
177
|
*/
|
|
154
|
-
export function
|
|
178
|
+
export function promotePending(agentAccount) {
|
|
155
179
|
const existing = readConfig();
|
|
156
|
-
if (!existing) {
|
|
157
|
-
return err("
|
|
180
|
+
if (!existing?.pendingApproval) {
|
|
181
|
+
return err("NO_PENDING", "No pending approval to promote");
|
|
158
182
|
}
|
|
183
|
+
const { agentKey: _oldKey, pendingApproval, version: _, ...rest } = existing;
|
|
184
|
+
const agentKeyAddress = privateKeyToAddress(pendingApproval.agentKey);
|
|
185
|
+
// Promote: pending key becomes active, pending cleared
|
|
159
186
|
writeConfig({
|
|
160
|
-
|
|
161
|
-
|
|
187
|
+
...rest,
|
|
188
|
+
agentKey: pendingApproval.agentKey,
|
|
189
|
+
agentAccount,
|
|
190
|
+
// pendingApproval intentionally omitted — cleared on promote
|
|
191
|
+
});
|
|
192
|
+
return ok({
|
|
193
|
+
agentKeyAddress,
|
|
194
|
+
agentAccount,
|
|
195
|
+
status: "ready",
|
|
162
196
|
});
|
|
163
|
-
return ok({ apiUrl: DEFAULT_API_URL });
|
|
164
197
|
}
|
|
165
198
|
/**
|
|
166
|
-
* Get current configuration status
|
|
167
|
-
* Checks env vars first (takes precedence), then config file
|
|
168
|
-
* @param options.verbose - Include raw addresses in output
|
|
199
|
+
* Get current configuration status.
|
|
200
|
+
* Checks env vars first (takes precedence), then config file.
|
|
169
201
|
*/
|
|
170
|
-
export function getStatus(
|
|
171
|
-
const { verbose = false } = options;
|
|
202
|
+
export function getStatus() {
|
|
172
203
|
// Check env vars first (takes precedence)
|
|
173
204
|
try {
|
|
174
205
|
const envConfig = parseEnvConfig();
|
|
175
206
|
const apiUrl = envConfig.API_URL;
|
|
176
207
|
const agentKeyAddress = privateKeyToAddress(envConfig.AGENT_KEY);
|
|
177
208
|
const agentAccount = envConfig.AGENT_ACCOUNT;
|
|
178
|
-
const
|
|
209
|
+
const result = {
|
|
179
210
|
status: "ready",
|
|
180
|
-
|
|
181
|
-
|
|
211
|
+
credentialSource: "env",
|
|
212
|
+
agentKeyAddress,
|
|
213
|
+
agentAccount,
|
|
182
214
|
};
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
...baseResult,
|
|
186
|
-
agentKeyAddress,
|
|
187
|
-
agentAccount,
|
|
188
|
-
...(apiUrl && apiUrl !== DEFAULT_API_URL ? { apiUrl } : {}),
|
|
189
|
-
});
|
|
215
|
+
if (existsSync(CONFIG_FILE)) {
|
|
216
|
+
result.configPath = CONFIG_FILE;
|
|
190
217
|
}
|
|
191
|
-
|
|
218
|
+
if (apiUrl && apiUrl !== DEFAULT_API_URL) {
|
|
219
|
+
result.apiUrl = apiUrl;
|
|
220
|
+
}
|
|
221
|
+
return ok(result);
|
|
192
222
|
}
|
|
193
223
|
catch {
|
|
194
224
|
// No env vars, check file
|
|
@@ -196,25 +226,33 @@ export function getStatus(options = {}) {
|
|
|
196
226
|
// Check config file
|
|
197
227
|
const config = getRuntimeConfig();
|
|
198
228
|
if (!config) {
|
|
199
|
-
return ok({ status: "not_initialized",
|
|
229
|
+
return ok({ status: "not_initialized", credentialSource: "none" });
|
|
200
230
|
}
|
|
201
231
|
// Determine effective API URL (env var takes precedence over file)
|
|
202
232
|
const envApiUrl = process.env.AMPERSEND_API_URL;
|
|
203
233
|
const effectiveApiUrl = envApiUrl ?? config.apiUrl;
|
|
204
|
-
const
|
|
234
|
+
const result = {
|
|
205
235
|
status: config.status,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
...(config.agentAccount ? { configName: generateConfigName(config.agentKeyAddress, config.agentAccount) } : {}),
|
|
236
|
+
credentialSource: "file",
|
|
237
|
+
configPath: CONFIG_FILE,
|
|
209
238
|
};
|
|
210
|
-
if (
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
239
|
+
if (config.agentKey) {
|
|
240
|
+
result.agentKeyAddress = privateKeyToAddress(config.agentKey);
|
|
241
|
+
}
|
|
242
|
+
if (config.agentAccount) {
|
|
243
|
+
result.agentAccount = config.agentAccount;
|
|
244
|
+
}
|
|
245
|
+
if (effectiveApiUrl && effectiveApiUrl !== DEFAULT_API_URL) {
|
|
246
|
+
result.apiUrl = effectiveApiUrl;
|
|
247
|
+
}
|
|
248
|
+
// Always show pending approval info if present
|
|
249
|
+
if (config.pendingApproval) {
|
|
250
|
+
const pendingKeyAddress = privateKeyToAddress(config.pendingApproval.agentKey);
|
|
251
|
+
result.pendingApproval = {
|
|
252
|
+
agentKeyAddress: pendingKeyAddress,
|
|
253
|
+
expired: isPendingExpired(config.pendingApproval),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
return ok(result);
|
|
219
257
|
}
|
|
220
258
|
//# sourceMappingURL=config.js.map
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,4 +7,9 @@
|
|
|
7
7
|
* @see https://github.com/rhinestonewtf/sdk/blob/main/src/modules/validators/core.ts
|
|
8
8
|
*/
|
|
9
9
|
export declare const OWNABLE_VALIDATOR: "0x000000000013fdB5234E4E3162a810F54d9f7E98";
|
|
10
|
+
/**
|
|
11
|
+
* CoSignerValidator address - ERC-7579 validator requiring dual ECDSA signatures
|
|
12
|
+
* Deployed via CREATE2 (same address on all chains)
|
|
13
|
+
*/
|
|
14
|
+
export declare const COSIGNER_VALIDATOR: "0x375992f0Eff108D87eAcD355B610bE2263B49bF8";
|
|
10
15
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/smart-account/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAG,4CAAqD,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/smart-account/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAG,4CAAqD,CAAA;AAEtF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAG,4CAAqD,CAAA"}
|
|
@@ -7,4 +7,9 @@
|
|
|
7
7
|
* @see https://github.com/rhinestonewtf/sdk/blob/main/src/modules/validators/core.ts
|
|
8
8
|
*/
|
|
9
9
|
export const OWNABLE_VALIDATOR = "0x000000000013fdB5234E4E3162a810F54d9f7E98";
|
|
10
|
+
/**
|
|
11
|
+
* CoSignerValidator address - ERC-7579 validator requiring dual ECDSA signatures
|
|
12
|
+
* Deployed via CREATE2 (same address on all chains)
|
|
13
|
+
*/
|
|
14
|
+
export const COSIGNER_VALIDATOR = "0x375992f0Eff108D87eAcD355B610bE2263B49bF8";
|
|
10
15
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/smart-account/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,4CAAqD,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/smart-account/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,4CAAqD,CAAA;AAEtF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,4CAAqD,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared EIP-712 type definitions for ERC-3009 TransferWithAuthorization
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* ERC-3009 TransferWithAuthorization message type
|
|
6
|
+
* Used by USDC and other ERC-3009 compliant tokens for gasless transfers
|
|
7
|
+
*/
|
|
8
|
+
export declare const TRANSFER_WITH_AUTHORIZATION_TYPE: readonly [{
|
|
9
|
+
readonly name: "from";
|
|
10
|
+
readonly type: "address";
|
|
11
|
+
}, {
|
|
12
|
+
readonly name: "to";
|
|
13
|
+
readonly type: "address";
|
|
14
|
+
}, {
|
|
15
|
+
readonly name: "value";
|
|
16
|
+
readonly type: "uint256";
|
|
17
|
+
}, {
|
|
18
|
+
readonly name: "validAfter";
|
|
19
|
+
readonly type: "uint256";
|
|
20
|
+
}, {
|
|
21
|
+
readonly name: "validBefore";
|
|
22
|
+
readonly type: "uint256";
|
|
23
|
+
}, {
|
|
24
|
+
readonly name: "nonce";
|
|
25
|
+
readonly type: "bytes32";
|
|
26
|
+
}];
|
|
27
|
+
//# sourceMappingURL=eip712-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712-types.d.ts","sourceRoot":"","sources":["../../src/smart-account/eip712-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;EAOnC,CAAA"}
|