@ampersend_ai/ampersend-sdk 0.0.21 → 0.0.25
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/agent-client.d.ts +81 -0
- package/dist/ampersend/agent-client.d.ts.map +1 -0
- package/dist/ampersend/agent-client.js +104 -0
- package/dist/ampersend/agent-client.js.map +1 -0
- package/dist/ampersend/agent.d.ts +119 -0
- package/dist/ampersend/agent.d.ts.map +1 -0
- package/dist/ampersend/agent.js +99 -0
- package/dist/ampersend/agent.js.map +1 -0
- package/dist/ampersend/client.d.ts +32 -8
- package/dist/ampersend/client.d.ts.map +1 -1
- package/dist/ampersend/client.js +81 -3
- package/dist/ampersend/client.js.map +1 -1
- package/dist/ampersend/curated-agent.d.ts +117 -0
- package/dist/ampersend/curated-agent.d.ts.map +1 -0
- package/dist/ampersend/curated-agent.js +149 -0
- package/dist/ampersend/curated-agent.js.map +1 -0
- package/dist/ampersend/env.d.ts +0 -15
- package/dist/ampersend/env.d.ts.map +1 -1
- package/dist/ampersend/env.js +0 -4
- package/dist/ampersend/env.js.map +1 -1
- package/dist/ampersend/index.d.ts +4 -0
- package/dist/ampersend/index.d.ts.map +1 -1
- package/dist/ampersend/index.js +6 -0
- package/dist/ampersend/index.js.map +1 -1
- package/dist/ampersend/marketplace.d.ts +53 -0
- package/dist/ampersend/marketplace.d.ts.map +1 -0
- package/dist/ampersend/marketplace.js +65 -0
- package/dist/ampersend/marketplace.js.map +1 -0
- package/dist/ampersend/treasurer.d.ts +4 -0
- package/dist/ampersend/treasurer.d.ts.map +1 -1
- package/dist/ampersend/treasurer.js +2 -2
- package/dist/ampersend/treasurer.js.map +1 -1
- package/dist/ampersend/types.d.ts +39 -6
- package/dist/ampersend/types.d.ts.map +1 -1
- package/dist/ampersend/types.js +19 -1
- package/dist/ampersend/types.js.map +1 -1
- package/dist/cli/ampersend.js +47 -2
- package/dist/cli/ampersend.js.map +1 -1
- package/dist/cli/commands/agent.d.ts +22 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +144 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/card.d.ts +125 -0
- package/dist/cli/commands/card.d.ts.map +1 -0
- package/dist/cli/commands/card.js +399 -0
- package/dist/cli/commands/card.js.map +1 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +2 -21
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/fetch.d.ts +76 -2
- package/dist/cli/commands/fetch.d.ts.map +1 -1
- package/dist/cli/commands/fetch.js +208 -133
- package/dist/cli/commands/fetch.js.map +1 -1
- package/dist/cli/commands/fund.d.ts +3 -0
- package/dist/cli/commands/fund.d.ts.map +1 -0
- package/dist/cli/commands/fund.js +22 -0
- package/dist/cli/commands/fund.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts +22 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -0
- package/dist/cli/commands/marketplace.js +136 -0
- package/dist/cli/commands/marketplace.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +12 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/config.d.ts +58 -10
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +110 -31
- package/dist/cli/config.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/proxy/cli.js +1 -0
- package/dist/mcp/proxy/cli.js.map +1 -1
- package/dist/mcp/proxy/factory.d.ts +2 -0
- package/dist/mcp/proxy/factory.d.ts.map +1 -1
- package/dist/mcp/proxy/factory.js +10 -1
- package/dist/mcp/proxy/factory.js.map +1 -1
- package/dist/mcp/proxy/server/init.js +1 -1
- package/dist/mcp/proxy/server/init.js.map +1 -1
- package/dist/mcp/proxy/server/server.d.ts +3 -1
- package/dist/mcp/proxy/server/server.d.ts.map +1 -1
- package/dist/mcp/proxy/server/server.js +5 -2
- package/dist/mcp/proxy/server/server.js.map +1 -1
- package/dist/mcp/proxy/types.d.ts +7 -0
- package/dist/mcp/proxy/types.d.ts.map +1 -1
- package/dist/mcp/proxy/types.js.map +1 -1
- package/dist/version.d.ts +3 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -1
- package/dist/version.js.map +1 -1
- package/dist/x402/http/factory.d.ts +2 -2
- package/dist/x402/http/factory.d.ts.map +1 -1
- package/dist/x402/http/factory.js +14 -8
- package/dist/x402/http/factory.js.map +1 -1
- package/dist/x402/index.d.ts +2 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +2 -0
- package/dist/x402/index.js.map +1 -1
- package/dist/x402/siwx.d.ts +55 -0
- package/dist/x402/siwx.d.ts.map +1 -0
- package/dist/x402/siwx.js +122 -0
- package/dist/x402/siwx.js.map +1 -0
- package/dist/x402/wallets/smart-account/cosigned.d.ts +9 -2
- package/dist/x402/wallets/smart-account/cosigned.d.ts.map +1 -1
- package/dist/x402/wallets/smart-account/cosigned.js +13 -4
- package/dist/x402/wallets/smart-account/cosigned.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { CuratedAgentDTO, MarketplaceClient, } from "../../ampersend/index.js";
|
|
3
|
+
import { DEFAULT_API_URL, getRuntimeConfig, loadCredentials } from "../config.js";
|
|
4
|
+
import { err, ok } from "../envelope.js";
|
|
5
|
+
// Decoded DTOs hold bigints (e.g. pricing_config.amount), which JSON.stringify
|
|
6
|
+
// can't serialize. Encode back to wire form before printing — the result is
|
|
7
|
+
// byte-identical to what came over the wire.
|
|
8
|
+
const encodeAgent = Schema.encodeSync(CuratedAgentDTO);
|
|
9
|
+
const encodeAgents = Schema.encodeSync(Schema.Array(CuratedAgentDTO));
|
|
10
|
+
const VALID_SOURCES = ["catalog", "bazaar", "ampersend", "registry"];
|
|
11
|
+
function resolveApiUrl() {
|
|
12
|
+
// Precedence: env var > config file > default. Mirrors `fetch.ts`.
|
|
13
|
+
return process.env.AMPERSEND_API_URL ?? getRuntimeConfig()?.apiUrl ?? DEFAULT_API_URL;
|
|
14
|
+
}
|
|
15
|
+
function isCuratedAgentSource(value) {
|
|
16
|
+
return VALID_SOURCES.includes(value);
|
|
17
|
+
}
|
|
18
|
+
function buildFilters(options) {
|
|
19
|
+
const filters = {};
|
|
20
|
+
if (options.source !== undefined) {
|
|
21
|
+
if (!isCuratedAgentSource(options.source)) {
|
|
22
|
+
return err("INVALID_SOURCE", `Invalid --source: ${options.source}. Must be one of: ${VALID_SOURCES.join(", ")}`);
|
|
23
|
+
}
|
|
24
|
+
filters.source = options.source;
|
|
25
|
+
}
|
|
26
|
+
if (options.category !== undefined)
|
|
27
|
+
filters.category = options.category;
|
|
28
|
+
if (options.search !== undefined)
|
|
29
|
+
filters.search = options.search;
|
|
30
|
+
if (options.network !== undefined)
|
|
31
|
+
filters.network = options.network;
|
|
32
|
+
return ok(filters);
|
|
33
|
+
}
|
|
34
|
+
export function buildClient() {
|
|
35
|
+
const result = loadCredentials();
|
|
36
|
+
if (!result.ok) {
|
|
37
|
+
console.log(JSON.stringify(result.error, null, 2));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
const { agentAccount, agentKey } = result.credentials;
|
|
41
|
+
return new MarketplaceClient({
|
|
42
|
+
baseUrl: resolveApiUrl(),
|
|
43
|
+
agentAddress: agentAccount,
|
|
44
|
+
sessionKeyPrivateKey: agentKey,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// `marketplace show` reads a single agent from an unauthenticated endpoint, so
|
|
48
|
+
// it must work without setup. Build a credential-free client rather than going
|
|
49
|
+
// through `buildClient`, which exits when no agent is configured.
|
|
50
|
+
export function buildReadOnlyClient() {
|
|
51
|
+
return new MarketplaceClient({ baseUrl: resolveApiUrl() });
|
|
52
|
+
}
|
|
53
|
+
async function executeList(options) {
|
|
54
|
+
const filtersResult = buildFilters(options);
|
|
55
|
+
if (!filtersResult.ok) {
|
|
56
|
+
if (options.raw) {
|
|
57
|
+
console.error(`Error: ${filtersResult.error.message}`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(JSON.stringify(filtersResult, null, 2));
|
|
61
|
+
}
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
const client = buildClient();
|
|
65
|
+
try {
|
|
66
|
+
const agents = await client.listAgents(filtersResult.data);
|
|
67
|
+
const wire = encodeAgents(agents);
|
|
68
|
+
if (options.raw) {
|
|
69
|
+
console.log(JSON.stringify(wire, null, 2));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(JSON.stringify(ok(wire), null, 2));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
77
|
+
if (options.raw) {
|
|
78
|
+
console.error(`Error: ${message}`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
console.log(JSON.stringify(err("API_ERROR", message), null, 2));
|
|
82
|
+
}
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function executeShow(id, options) {
|
|
87
|
+
const client = buildReadOnlyClient();
|
|
88
|
+
try {
|
|
89
|
+
const agent = await client.getAgent(id);
|
|
90
|
+
const wire = encodeAgent(agent);
|
|
91
|
+
if (options.raw) {
|
|
92
|
+
console.log(JSON.stringify(wire, null, 2));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.log(JSON.stringify(ok(wire), null, 2));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
100
|
+
const code = message.startsWith("HTTP 404") ? "NOT_FOUND" : "API_ERROR";
|
|
101
|
+
if (options.raw) {
|
|
102
|
+
console.error(`Error: ${message}`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
console.log(JSON.stringify(err(code, message), null, 2));
|
|
106
|
+
}
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Register the marketplace subcommand on a Commander program
|
|
112
|
+
*/
|
|
113
|
+
export function registerMarketplaceCommand(program) {
|
|
114
|
+
const marketplace = program.command("marketplace").description("Browse curated agents in the marketplace");
|
|
115
|
+
marketplace
|
|
116
|
+
.command("list")
|
|
117
|
+
.description("List curated agents, optionally filtered")
|
|
118
|
+
.option("--source <source>", `Filter by source (one of: ${VALID_SOURCES.join(", ")})`)
|
|
119
|
+
.option("--category <category>", "Filter by category")
|
|
120
|
+
.option("--search <query>", "Fuzzy search across name, description, tags, and category")
|
|
121
|
+
.option("--network <network>", "Filter by supported network (e.g. base, base-sepolia)")
|
|
122
|
+
.option("--raw", "Output raw JSON array instead of envelope", false)
|
|
123
|
+
.action(async (options) => {
|
|
124
|
+
await executeList(options);
|
|
125
|
+
});
|
|
126
|
+
marketplace
|
|
127
|
+
.command("show")
|
|
128
|
+
.description("Show details for a single curated agent")
|
|
129
|
+
.argument("<id>", "Curated agent id (UUID)")
|
|
130
|
+
.option("--raw", "Output raw JSON object instead of envelope", false)
|
|
131
|
+
.action(async (id, options) => {
|
|
132
|
+
await executeShow(id, options);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
export { executeList, executeShow };
|
|
136
|
+
//# sourceMappingURL=marketplace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/cli/commands/marketplace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MIN_SKILL_VERSION, VERSION } from "../../version.js";
|
|
2
|
+
import { ok } from "../envelope.js";
|
|
3
|
+
export function registerVersionCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command("version")
|
|
6
|
+
.description("Print CLI version and minimum supported skill version as JSON")
|
|
7
|
+
.action(() => {
|
|
8
|
+
console.log(JSON.stringify(ok({ cliVersion: VERSION, minSkillVersion: MIN_SKILL_VERSION }), null, 2));
|
|
9
|
+
process.exit(0);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/dist/cli/config.d.ts
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Schema } from "effect";
|
|
2
2
|
import { type ConfigStatus, type JsonEnvelope } from "./envelope.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Resolved credentials for an authenticated command. Tries env vars first
|
|
5
|
+
* (so a deploy can override without touching the local config file), then
|
|
6
|
+
* the config file written by `setup` / `config set`.
|
|
7
|
+
*/
|
|
8
|
+
export interface ResolvedCredentials {
|
|
9
|
+
agentAccount: `0x${string}`;
|
|
10
|
+
agentKey: `0x${string}`;
|
|
11
|
+
apiUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Shared by every CLI command that needs to talk to the API as an agent.
|
|
15
|
+
* Returns an `err` envelope when the local config isn't ready, so the
|
|
16
|
+
* caller can print it and exit.
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadCredentials(): {
|
|
19
|
+
ok: true;
|
|
20
|
+
credentials: ResolvedCredentials;
|
|
21
|
+
} | {
|
|
22
|
+
ok: false;
|
|
23
|
+
error: JsonEnvelope<never>;
|
|
24
|
+
};
|
|
3
25
|
export declare const CONFIG_FILE: string;
|
|
4
26
|
export type { ConfigStatus };
|
|
5
27
|
/** Default API URL (production) */
|
|
@@ -10,14 +32,31 @@ export interface PendingApproval {
|
|
|
10
32
|
agentKey: `0x${string}`;
|
|
11
33
|
expiresAt: string;
|
|
12
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Cached Laso Bearer token for `card details`/`list`, so a warm read costs
|
|
37
|
+
* nothing. Stamped with the identity (`agentKey`) and `apiUrl` it was minted
|
|
38
|
+
* under: `readLasoToken` treats it as absent if either no longer matches the
|
|
39
|
+
* active config (covers env-var overrides) or it has expired. Self-correcting,
|
|
40
|
+
* so the identity/URL write paths only need to drop it, not re-thread it.
|
|
41
|
+
*
|
|
42
|
+
* Schema is the source of truth; the `LasoToken` type is derived from it so the
|
|
43
|
+
* two can't drift (the same pattern as the schemas in `src/ampersend/`).
|
|
44
|
+
*/
|
|
45
|
+
declare const LasoTokenSchema: Schema.Struct<{
|
|
46
|
+
idToken: typeof Schema.String;
|
|
47
|
+
expiresAt: typeof Schema.String;
|
|
48
|
+
agentKey: Schema.TemplateLiteral<`0x${string}`>;
|
|
49
|
+
apiUrl: Schema.optional<typeof Schema.String>;
|
|
50
|
+
}>;
|
|
51
|
+
export type LasoToken = typeof LasoTokenSchema.Type;
|
|
13
52
|
/** Stored configuration V1 */
|
|
14
53
|
export interface StoredConfigV1 {
|
|
15
54
|
version: 1;
|
|
16
55
|
agentKey?: `0x${string}`;
|
|
17
56
|
agentAccount?: `0x${string}`;
|
|
18
|
-
network?: Network;
|
|
19
57
|
apiUrl?: string;
|
|
20
58
|
pendingApproval?: PendingApproval;
|
|
59
|
+
lasoToken?: LasoToken;
|
|
21
60
|
}
|
|
22
61
|
/** Current stored config type */
|
|
23
62
|
export type StoredConfig = StoredConfigV1;
|
|
@@ -25,9 +64,9 @@ export type StoredConfig = StoredConfigV1;
|
|
|
25
64
|
export interface RuntimeConfig {
|
|
26
65
|
agentKey?: `0x${string}`;
|
|
27
66
|
agentAccount?: `0x${string}`;
|
|
28
|
-
network?: Network;
|
|
29
67
|
apiUrl?: string;
|
|
30
68
|
pendingApproval?: PendingApproval;
|
|
69
|
+
lasoToken?: LasoToken;
|
|
31
70
|
status: ConfigStatus;
|
|
32
71
|
}
|
|
33
72
|
/**
|
|
@@ -72,12 +111,6 @@ export declare function setConfig(secret: string): JsonEnvelope<{
|
|
|
72
111
|
export declare function setApiUrl(apiUrl: string | undefined): JsonEnvelope<{
|
|
73
112
|
apiUrl: string;
|
|
74
113
|
}>;
|
|
75
|
-
/**
|
|
76
|
-
* Set network in config. Pass undefined to clear (revert to default "base").
|
|
77
|
-
*/
|
|
78
|
-
export declare function setNetwork(network: string | undefined): JsonEnvelope<{
|
|
79
|
-
network: Network;
|
|
80
|
-
}>;
|
|
81
114
|
/**
|
|
82
115
|
* Store a pending approval in config.
|
|
83
116
|
* Called by `setup start`.
|
|
@@ -96,6 +129,22 @@ export declare function promotePending(agentAccount: `0x${string}`): JsonEnvelop
|
|
|
96
129
|
agentAccount: string;
|
|
97
130
|
status: ConfigStatus;
|
|
98
131
|
}>;
|
|
132
|
+
/**
|
|
133
|
+
* Cache a Laso Bearer token, preserving the rest of the config file.
|
|
134
|
+
* The token is stamped with the identity/URL it was minted under so
|
|
135
|
+
* `readLasoToken` can reject it after an env-var or config change.
|
|
136
|
+
*
|
|
137
|
+
* No-op when credentials come purely from env vars (no file to write): the
|
|
138
|
+
* config file is the only cache, and we don't create one just to hold a token.
|
|
139
|
+
*/
|
|
140
|
+
export declare function storeLasoToken(token: LasoToken): void;
|
|
141
|
+
/**
|
|
142
|
+
* Read the cached Laso token, or null if there's no usable one. Treated as
|
|
143
|
+
* absent when: no token cached, expired, or its stamped `agentKey`/`apiUrl`
|
|
144
|
+
* no longer match the active credentials (covers env-var overrides and any
|
|
145
|
+
* write path that forgot to drop it). Self-correcting by construction.
|
|
146
|
+
*/
|
|
147
|
+
export declare function readLasoToken(active: ResolvedCredentials): LasoToken | null;
|
|
99
148
|
/** Configuration source */
|
|
100
149
|
export type CredentialSource = "env" | "file" | "none";
|
|
101
150
|
/** Data returned by getStatus */
|
|
@@ -105,7 +154,6 @@ export interface StatusData {
|
|
|
105
154
|
configPath?: string;
|
|
106
155
|
agentKeyAddress?: string;
|
|
107
156
|
agentAccount?: string;
|
|
108
|
-
network?: Network;
|
|
109
157
|
apiUrl?: string;
|
|
110
158
|
pendingApproval?: {
|
|
111
159
|
agentKeyAddress: string;
|
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
|
@@ -4,8 +4,47 @@ import { join } from "node:path";
|
|
|
4
4
|
import { Schema } from "effect";
|
|
5
5
|
import { isAddress } from "viem";
|
|
6
6
|
import { privateKeyToAddress } from "viem/accounts";
|
|
7
|
-
import {
|
|
7
|
+
import { parseEnvConfig } from "../ampersend/env.js";
|
|
8
8
|
import { err, ok } from "./envelope.js";
|
|
9
|
+
/**
|
|
10
|
+
* Shared by every CLI command that needs to talk to the API as an agent.
|
|
11
|
+
* Returns an `err` envelope when the local config isn't ready, so the
|
|
12
|
+
* caller can print it and exit.
|
|
13
|
+
*/
|
|
14
|
+
export function loadCredentials() {
|
|
15
|
+
try {
|
|
16
|
+
const envConfig = parseEnvConfig();
|
|
17
|
+
return {
|
|
18
|
+
ok: true,
|
|
19
|
+
credentials: {
|
|
20
|
+
agentAccount: envConfig.AGENT_ACCOUNT,
|
|
21
|
+
agentKey: envConfig.AGENT_KEY,
|
|
22
|
+
...(envConfig.API_URL ? { apiUrl: envConfig.API_URL } : {}),
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Fall back to config file
|
|
28
|
+
}
|
|
29
|
+
const fileConfig = getRuntimeConfig();
|
|
30
|
+
if (fileConfig?.status === "ready" && fileConfig.agentAccount && fileConfig.agentKey) {
|
|
31
|
+
const apiUrl = process.env.AMPERSEND_API_URL ?? fileConfig.apiUrl;
|
|
32
|
+
return {
|
|
33
|
+
ok: true,
|
|
34
|
+
credentials: {
|
|
35
|
+
agentAccount: fileConfig.agentAccount,
|
|
36
|
+
agentKey: fileConfig.agentKey,
|
|
37
|
+
...(apiUrl ? { apiUrl } : {}),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const status = fileConfig?.status ?? "not_initialized";
|
|
42
|
+
const code = status === "not_initialized" ? "NOT_CONFIGURED" : "SETUP_INCOMPLETE";
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
error: err(code, 'Run "ampersend setup start" or "ampersend config set" to configure', { status }),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
9
48
|
/** Config directory and file paths */
|
|
10
49
|
const CONFIG_DIR = join(homedir(), ".ampersend");
|
|
11
50
|
export const CONFIG_FILE = join(CONFIG_DIR, "config.json");
|
|
@@ -16,18 +55,37 @@ const APPROVAL_EXPIRY_MS = 30 * 60 * 1000;
|
|
|
16
55
|
/** Default API URL (production) */
|
|
17
56
|
export const DEFAULT_API_URL = "https://api.ampersend.ai";
|
|
18
57
|
const HexString = Schema.TemplateLiteral(Schema.Literal("0x"), Schema.String);
|
|
19
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Cached Laso Bearer token for `card details`/`list`, so a warm read costs
|
|
60
|
+
* nothing. Stamped with the identity (`agentKey`) and `apiUrl` it was minted
|
|
61
|
+
* under: `readLasoToken` treats it as absent if either no longer matches the
|
|
62
|
+
* active config (covers env-var overrides) or it has expired. Self-correcting,
|
|
63
|
+
* so the identity/URL write paths only need to drop it, not re-thread it.
|
|
64
|
+
*
|
|
65
|
+
* Schema is the source of truth; the `LasoToken` type is derived from it so the
|
|
66
|
+
* two can't drift (the same pattern as the schemas in `src/ampersend/`).
|
|
67
|
+
*/
|
|
68
|
+
const LasoTokenSchema = Schema.Struct({
|
|
69
|
+
idToken: Schema.String,
|
|
70
|
+
expiresAt: Schema.String, // ISO timestamp
|
|
71
|
+
agentKey: HexString,
|
|
72
|
+
apiUrl: Schema.optional(Schema.String),
|
|
73
|
+
});
|
|
74
|
+
/** Schema for validating stored config read from disk.
|
|
75
|
+
*
|
|
76
|
+
* Effect Schema strips unknown keys, so legacy fields like `network` written
|
|
77
|
+
* by older versions are silently dropped on next write. */
|
|
20
78
|
const StoredConfigSchema = Schema.Struct({
|
|
21
79
|
version: Schema.Literal(1),
|
|
22
80
|
agentKey: Schema.optional(HexString),
|
|
23
81
|
agentAccount: Schema.optional(HexString),
|
|
24
|
-
network: Schema.optional(Schema.Literal(...NETWORKS)),
|
|
25
82
|
apiUrl: Schema.optional(Schema.String),
|
|
26
83
|
pendingApproval: Schema.optional(Schema.Struct({
|
|
27
84
|
token: Schema.String,
|
|
28
85
|
agentKey: HexString,
|
|
29
86
|
expiresAt: Schema.String,
|
|
30
87
|
})),
|
|
88
|
+
lasoToken: Schema.optional(LasoTokenSchema),
|
|
31
89
|
});
|
|
32
90
|
/**
|
|
33
91
|
* Ensure config directory exists with secure permissions
|
|
@@ -114,10 +172,11 @@ export function setConfig(secret) {
|
|
|
114
172
|
return err("INVALID_ADDRESS", "Invalid Ethereum address format for agent account");
|
|
115
173
|
}
|
|
116
174
|
const existing = readConfig();
|
|
175
|
+
// lasoToken intentionally not carried over: changing the active identity
|
|
176
|
+
// invalidates any cached Laso token (it's stamped with the old agentKey).
|
|
117
177
|
writeConfig({
|
|
118
178
|
agentKey: agentKey,
|
|
119
179
|
agentAccount: agentAccount,
|
|
120
|
-
...(existing?.network ? { network: existing.network } : {}),
|
|
121
180
|
...(existing?.apiUrl ? { apiUrl: existing.apiUrl } : {}),
|
|
122
181
|
// Preserve pending approval if any
|
|
123
182
|
...(existing?.pendingApproval ? { pendingApproval: existing.pendingApproval } : {}),
|
|
@@ -142,32 +201,17 @@ export function setApiUrl(apiUrl) {
|
|
|
142
201
|
}
|
|
143
202
|
}
|
|
144
203
|
const existing = readConfig();
|
|
204
|
+
// lasoToken intentionally not carried over: changing the API URL points reads
|
|
205
|
+
// at a different Laso/facilitator context, so a token minted under the old
|
|
206
|
+
// URL no longer applies.
|
|
145
207
|
writeConfig({
|
|
146
208
|
...(existing?.agentKey ? { agentKey: existing.agentKey } : {}),
|
|
147
209
|
...(existing?.agentAccount ? { agentAccount: existing.agentAccount } : {}),
|
|
148
|
-
...(existing?.network ? { network: existing.network } : {}),
|
|
149
210
|
...(existing?.pendingApproval ? { pendingApproval: existing.pendingApproval } : {}),
|
|
150
211
|
...(apiUrl != null ? { apiUrl } : {}),
|
|
151
212
|
});
|
|
152
213
|
return ok({ apiUrl: apiUrl ?? DEFAULT_API_URL });
|
|
153
214
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Set network in config. Pass undefined to clear (revert to default "base").
|
|
156
|
-
*/
|
|
157
|
-
export function setNetwork(network) {
|
|
158
|
-
if (network != null && !NETWORKS.includes(network)) {
|
|
159
|
-
return err("INVALID_NETWORK", `Invalid network. Must be one of: ${NETWORKS.join(", ")}`);
|
|
160
|
-
}
|
|
161
|
-
const existing = readConfig();
|
|
162
|
-
writeConfig({
|
|
163
|
-
...(existing?.agentKey ? { agentKey: existing.agentKey } : {}),
|
|
164
|
-
...(existing?.agentAccount ? { agentAccount: existing.agentAccount } : {}),
|
|
165
|
-
...(existing?.apiUrl ? { apiUrl: existing.apiUrl } : {}),
|
|
166
|
-
...(existing?.pendingApproval ? { pendingApproval: existing.pendingApproval } : {}),
|
|
167
|
-
...(network != null ? { network: network } : {}),
|
|
168
|
-
});
|
|
169
|
-
return ok({ network: network ?? "base" });
|
|
170
|
-
}
|
|
171
215
|
/**
|
|
172
216
|
* Store a pending approval in config.
|
|
173
217
|
* Called by `setup start`.
|
|
@@ -177,8 +221,10 @@ export function storePendingApproval(pending) {
|
|
|
177
221
|
writeConfig({
|
|
178
222
|
...(existing?.agentKey ? { agentKey: existing.agentKey } : {}),
|
|
179
223
|
...(existing?.agentAccount ? { agentAccount: existing.agentAccount } : {}),
|
|
180
|
-
...(existing?.network ? { network: existing.network } : {}),
|
|
181
224
|
...(existing?.apiUrl ? { apiUrl: existing.apiUrl } : {}),
|
|
225
|
+
// Active identity is unchanged by a pending approval, so a cached Laso
|
|
226
|
+
// token stays valid — preserve it.
|
|
227
|
+
...(existing?.lasoToken ? { lasoToken: existing.lasoToken } : {}),
|
|
182
228
|
pendingApproval: pending,
|
|
183
229
|
});
|
|
184
230
|
}
|
|
@@ -201,7 +247,10 @@ export function promotePending(agentAccount) {
|
|
|
201
247
|
if (!existing?.pendingApproval) {
|
|
202
248
|
return err("NO_PENDING", "No pending approval to promote");
|
|
203
249
|
}
|
|
204
|
-
|
|
250
|
+
// Drop lasoToken alongside the old key: the active identity changes here, so
|
|
251
|
+
// a token minted under the previous key no longer matches. readLasoToken
|
|
252
|
+
// would reject it anyway; dropping it keeps the file honest.
|
|
253
|
+
const { agentKey: _oldKey, lasoToken: _lasoToken, pendingApproval, version: _version, ...rest } = existing;
|
|
205
254
|
const agentKeyAddress = privateKeyToAddress(pendingApproval.agentKey);
|
|
206
255
|
// Promote: pending key becomes active, pending cleared
|
|
207
256
|
writeConfig({
|
|
@@ -216,6 +265,43 @@ export function promotePending(agentAccount) {
|
|
|
216
265
|
status: "ready",
|
|
217
266
|
});
|
|
218
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Cache a Laso Bearer token, preserving the rest of the config file.
|
|
270
|
+
* The token is stamped with the identity/URL it was minted under so
|
|
271
|
+
* `readLasoToken` can reject it after an env-var or config change.
|
|
272
|
+
*
|
|
273
|
+
* No-op when credentials come purely from env vars (no file to write): the
|
|
274
|
+
* config file is the only cache, and we don't create one just to hold a token.
|
|
275
|
+
*/
|
|
276
|
+
export function storeLasoToken(token) {
|
|
277
|
+
const existing = readConfig();
|
|
278
|
+
if (!existing)
|
|
279
|
+
return;
|
|
280
|
+
const { version: _version, ...rest } = existing;
|
|
281
|
+
writeConfig({ ...rest, lasoToken: token });
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Read the cached Laso token, or null if there's no usable one. Treated as
|
|
285
|
+
* absent when: no token cached, expired, or its stamped `agentKey`/`apiUrl`
|
|
286
|
+
* no longer match the active credentials (covers env-var overrides and any
|
|
287
|
+
* write path that forgot to drop it). Self-correcting by construction.
|
|
288
|
+
*/
|
|
289
|
+
export function readLasoToken(active) {
|
|
290
|
+
const stored = readConfig()?.lasoToken;
|
|
291
|
+
if (!stored)
|
|
292
|
+
return null;
|
|
293
|
+
if (new Date(stored.expiresAt).getTime() <= Date.now())
|
|
294
|
+
return null;
|
|
295
|
+
if (stored.agentKey !== active.agentKey)
|
|
296
|
+
return null;
|
|
297
|
+
// apiUrl absent on either side means production default; normalize so an
|
|
298
|
+
// explicit prod URL and an implicit one are treated as the same context.
|
|
299
|
+
const storedUrl = stored.apiUrl ?? DEFAULT_API_URL;
|
|
300
|
+
const activeUrl = active.apiUrl ?? DEFAULT_API_URL;
|
|
301
|
+
if (storedUrl !== activeUrl)
|
|
302
|
+
return null;
|
|
303
|
+
return stored;
|
|
304
|
+
}
|
|
219
305
|
/**
|
|
220
306
|
* Get current configuration status.
|
|
221
307
|
* Checks env vars first (takes precedence), then config file.
|
|
@@ -232,7 +318,6 @@ export function getStatus() {
|
|
|
232
318
|
credentialSource: "env",
|
|
233
319
|
agentKeyAddress,
|
|
234
320
|
agentAccount,
|
|
235
|
-
network: envConfig.NETWORK,
|
|
236
321
|
};
|
|
237
322
|
if (existsSync(CONFIG_FILE)) {
|
|
238
323
|
result.configPath = CONFIG_FILE;
|
|
@@ -264,12 +349,6 @@ export function getStatus() {
|
|
|
264
349
|
if (config.agentAccount) {
|
|
265
350
|
result.agentAccount = config.agentAccount;
|
|
266
351
|
}
|
|
267
|
-
// Determine effective network (env var takes precedence over file)
|
|
268
|
-
const envNetwork = process.env.AMPERSEND_NETWORK;
|
|
269
|
-
const effectiveNetwork = envNetwork ?? config.network;
|
|
270
|
-
if (effectiveNetwork) {
|
|
271
|
-
result.network = effectiveNetwork;
|
|
272
|
-
}
|
|
273
352
|
if (effectiveApiUrl && effectiveApiUrl !== DEFAULT_API_URL) {
|
|
274
353
|
result.apiUrl = effectiveApiUrl;
|
|
275
354
|
}
|
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,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,6 @@ export { initializeProxyServer } from "./mcp/proxy/index.ts";
|
|
|
9
9
|
export { Client } from "./mcp/client/index.ts";
|
|
10
10
|
export { AmpersendX402Client, PaymentDeclinedError, UnsupportedProtocolError } from "./x402/http/index.ts";
|
|
11
11
|
export type { AmpersendNetworks } from "./x402/http/index.ts";
|
|
12
|
+
export { createSiwxSigner, wrapFetchWithAmpersendSiwx } from "./x402/siwx.ts";
|
|
13
|
+
export type { SiwxSignerConfig } from "./x402/siwx.ts";
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhG,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAClG,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGrE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhG,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAClG,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGrE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAC7E,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,4 +8,5 @@ export { AccountWallet, SmartAccountWallet, WalletError } from "./x402/index.js"
|
|
|
8
8
|
export { initializeProxyServer } from "./mcp/proxy/index.js";
|
|
9
9
|
export { Client } from "./mcp/client/index.js";
|
|
10
10
|
export { AmpersendX402Client, PaymentDeclinedError, UnsupportedProtocolError } from "./x402/http/index.js";
|
|
11
|
+
export { createSiwxSigner, wrapFetchWithAmpersendSiwx } from "./x402/siwx.js";
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAA4B,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAgC,MAAM,wBAAwB,CAAA;AAMhG,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAA4B,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAgC,MAAM,wBAAwB,CAAA;AAMhG,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE1G,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/mcp/proxy/cli.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/mcp/proxy/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAuB,MAAM,UAAU,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAMN,MAAM,YAAY,CAAA;AAEnB;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA2B,EAAE,SAAyB;IAC1F,MAAM,IAAI,GAAG,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,CAAA;IAC9C,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;KACL,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAyB;IAC1D,IAAI,CAAC,SAAS,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,qBAAqB;IACrB,IAAI,SAAS,CAAC,2BAA2B,EAAE,CAAC;QAC1C,MAAM,wBAAwB,GAA6B;YACzD,IAAI,EAAE,eAAe;YACrB,mBAAmB,EAAE,SAAS,CAAC,2BAA4C;YAC3E,oBAAoB,EAAE,SAAS,CAAC,mCAAqD;YACrF,gBAAgB,EAAE,SAAS,CAAC,qCAAgD;SAC7E,CAAA;QACD,OAAO,wBAAwB,CAAA;IACjC,CAAC;IAED,WAAW;IACX,MAAM,eAAe,GAAoB;QACvC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,SAAS,CAAC,iBAAkC;KACzD,CAAA;IACD,OAAO,eAAe,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAmB,EAAE,SAAS,GAAG,iBAAiB;IACtE,yDAAyD;IACzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,iBAAiB,CAAC;SACvB,WAAW,CAAC,uBAAuB,CAAC;SACpC,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC5F,MAAM,CAAC,0BAA0B,EAAE,0DAA0D,CAAC;SAC9F,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAyC,CAAA;IAElE,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,CAAA;IAErD,8CAA8C;IAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAA;IAEnD,mDAAmD;IACnD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAElD,0CAA0C;IAC1C,iEAAiE;IACjE,iDAAiD;IACjD,MAAM,SAAS,GAAG,SAAS,CAAC,iBAAiB;QAC3C,CAAC,CAAC,wBAAwB,CAAC;YACvB,MAAM,EAAE,SAAS,CAAC,iBAAiB;YACnC,YAAY;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/mcp/proxy/cli.ts"],"names":[],"mappings":"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"}
|