@vapi-network/sources 0.2.0-dev.2 → 0.2.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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +235 -162
- package/dist/index.js.map +3 -3
- package/dist/vapi-registry.d.ts +6 -1
- package/dist/vapi-registry.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { bazaarSource, mapBazaarItem, type BazaarSourceOptions } from "./bazaar.js";
|
|
2
2
|
export { localFileSource } from "./local-file.js";
|
|
3
|
-
export { findMarketplaceApiByRef, resolveServiceEndpoint, searchMarketplace, vapiRegistrySource, type MarketplaceSearchInput, type MarketplaceSearchOptions, type VapiRegistryConfig, type VapiRegistrySourceOptions, } from "./vapi-registry.js";
|
|
3
|
+
export { findMarketplaceApiByRef, resolveServiceEndpoint, resolveServiceListing, searchMarketplace, vapiRegistrySource, type MarketplaceSearchInput, type MarketplaceSearchOptions, type VapiRegistryConfig, type VapiRegistrySourceOptions, } from "./vapi-registry.js";
|
|
4
4
|
export { x402scanSource } from "./x402scan.js";
|
|
5
5
|
//# 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":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19670,6 +19670,143 @@ function date4(params) {
|
|
|
19670
19670
|
return _coercedDate(ZodDate, params);
|
|
19671
19671
|
}
|
|
19672
19672
|
|
|
19673
|
+
// ../core/src/marketplace-contracts.ts
|
|
19674
|
+
var MARKETPLACE_DISCOVERY_PROTOCOL = "vapi.marketplace.discovery/1";
|
|
19675
|
+
var MARKETPLACE_RANKING_VERSION = "marketplace-ranking-v1";
|
|
19676
|
+
var MARKETPLACE_KINDS = ["api", "service_offer", "open_request"];
|
|
19677
|
+
var MARKETPLACE_EXECUTION_METHODS = [
|
|
19678
|
+
"GET",
|
|
19679
|
+
"HEAD",
|
|
19680
|
+
"POST",
|
|
19681
|
+
"PUT",
|
|
19682
|
+
"PATCH",
|
|
19683
|
+
"DELETE"
|
|
19684
|
+
];
|
|
19685
|
+
var marketplaceExecutionMethodSchema = external_exports.enum(MARKETPLACE_EXECUTION_METHODS);
|
|
19686
|
+
var marketplaceKindSchema = external_exports.enum(MARKETPLACE_KINDS);
|
|
19687
|
+
var EXECUTION_MODES = ["direct", "gateway"];
|
|
19688
|
+
var executionModeSchema = external_exports.enum(EXECUTION_MODES);
|
|
19689
|
+
var PROVENANCES = ["indexed", "self_listed", "partner"];
|
|
19690
|
+
var provenanceSchema = external_exports.enum(PROVENANCES);
|
|
19691
|
+
var FIRST_PARTY_PROVENANCES = ["self_listed", "partner"];
|
|
19692
|
+
var firstPartyProvenanceSchema = external_exports.enum(FIRST_PARTY_PROVENANCES);
|
|
19693
|
+
var LISTING_GROUPS = ["vapi", "added", "partner", "external"];
|
|
19694
|
+
var listingGroupSchema = external_exports.enum(LISTING_GROUPS);
|
|
19695
|
+
var listingFeeSchema = external_exports.looseObject({
|
|
19696
|
+
bps: external_exports.number().int().min(0),
|
|
19697
|
+
label: external_exports.string()
|
|
19698
|
+
});
|
|
19699
|
+
var listingDisclosureShape = {
|
|
19700
|
+
group: listingGroupSchema.optional(),
|
|
19701
|
+
fee: listingFeeSchema.optional()
|
|
19702
|
+
};
|
|
19703
|
+
var marketplaceBadgeCodeSchema = external_exports.enum([
|
|
19704
|
+
"live_x402",
|
|
19705
|
+
"partner",
|
|
19706
|
+
"payout_wallet_confirmed",
|
|
19707
|
+
"vapi_verified",
|
|
19708
|
+
"external_catalog",
|
|
19709
|
+
"approved_vendor"
|
|
19710
|
+
]);
|
|
19711
|
+
var marketplaceBadgeSchema = external_exports.looseObject({
|
|
19712
|
+
code: marketplaceBadgeCodeSchema,
|
|
19713
|
+
label: external_exports.string().trim().min(1).max(80)
|
|
19714
|
+
});
|
|
19715
|
+
var marketplacePublicFactSchema = external_exports.looseObject({
|
|
19716
|
+
label: external_exports.string().trim().min(1).max(80),
|
|
19717
|
+
value: external_exports.string().trim().min(1).max(160)
|
|
19718
|
+
});
|
|
19719
|
+
var marketplaceHrefSchema = external_exports.union([
|
|
19720
|
+
external_exports.string().trim().min(1).max(2048).regex(/^\/(?!\/)/),
|
|
19721
|
+
external_exports.url().max(2048).regex(/^https:\/\//)
|
|
19722
|
+
]);
|
|
19723
|
+
var marketplaceCardSchema = external_exports.looseObject({
|
|
19724
|
+
title: external_exports.string().trim().min(1).max(160),
|
|
19725
|
+
summary: external_exports.string().trim().min(1).max(1e3),
|
|
19726
|
+
byline: external_exports.string().trim().min(1).max(160).optional(),
|
|
19727
|
+
bylineHref: marketplaceHrefSchema.optional(),
|
|
19728
|
+
badges: external_exports.array(marketplaceBadgeSchema).max(8),
|
|
19729
|
+
facts: external_exports.array(marketplacePublicFactSchema).max(12)
|
|
19730
|
+
});
|
|
19731
|
+
var marketplaceHitBase = {
|
|
19732
|
+
ref: external_exports.string().trim().min(1).max(512),
|
|
19733
|
+
card: marketplaceCardSchema,
|
|
19734
|
+
...listingDisclosureShape
|
|
19735
|
+
};
|
|
19736
|
+
var invokeApiActionSchema = external_exports.looseObject({
|
|
19737
|
+
type: external_exports.literal("invoke_api"),
|
|
19738
|
+
href: marketplaceHrefSchema
|
|
19739
|
+
});
|
|
19740
|
+
var firstPartyApiMarketplaceHitSchema = external_exports.looseObject({
|
|
19741
|
+
...marketplaceHitBase,
|
|
19742
|
+
kind: external_exports.literal("api"),
|
|
19743
|
+
provenance: firstPartyProvenanceSchema,
|
|
19744
|
+
execution: external_exports.looseObject({
|
|
19745
|
+
mode: executionModeSchema
|
|
19746
|
+
}),
|
|
19747
|
+
action: invokeApiActionSchema
|
|
19748
|
+
});
|
|
19749
|
+
var mirroredApiMarketplaceHitSchema = external_exports.looseObject({
|
|
19750
|
+
...marketplaceHitBase,
|
|
19751
|
+
kind: external_exports.literal("api"),
|
|
19752
|
+
provenance: external_exports.literal("indexed"),
|
|
19753
|
+
execution: external_exports.looseObject({
|
|
19754
|
+
mode: external_exports.literal("direct"),
|
|
19755
|
+
url: external_exports.url().max(2048).regex(/^https:\/\/(?![^/?#]*@)/),
|
|
19756
|
+
method: marketplaceExecutionMethodSchema.nullable(),
|
|
19757
|
+
network: external_exports.string().trim().max(160).regex(/^eip155:[1-9]\d*$/)
|
|
19758
|
+
}),
|
|
19759
|
+
action: invokeApiActionSchema
|
|
19760
|
+
});
|
|
19761
|
+
var apiMarketplaceHitSchema = external_exports.discriminatedUnion("provenance", [
|
|
19762
|
+
firstPartyApiMarketplaceHitSchema,
|
|
19763
|
+
mirroredApiMarketplaceHitSchema
|
|
19764
|
+
]);
|
|
19765
|
+
var serviceOfferMarketplaceHitSchema = external_exports.looseObject({
|
|
19766
|
+
...marketplaceHitBase,
|
|
19767
|
+
kind: external_exports.literal("service_offer"),
|
|
19768
|
+
action: external_exports.looseObject({
|
|
19769
|
+
type: external_exports.literal("start_engagement"),
|
|
19770
|
+
href: marketplaceHrefSchema
|
|
19771
|
+
})
|
|
19772
|
+
});
|
|
19773
|
+
var openRequestMarketplaceHitSchema = external_exports.looseObject({
|
|
19774
|
+
...marketplaceHitBase,
|
|
19775
|
+
kind: external_exports.literal("open_request"),
|
|
19776
|
+
action: external_exports.looseObject({
|
|
19777
|
+
type: external_exports.literal("propose_to_request"),
|
|
19778
|
+
href: marketplaceHrefSchema
|
|
19779
|
+
})
|
|
19780
|
+
});
|
|
19781
|
+
var marketplaceHitSchema = external_exports.union([
|
|
19782
|
+
apiMarketplaceHitSchema,
|
|
19783
|
+
serviceOfferMarketplaceHitSchema,
|
|
19784
|
+
openRequestMarketplaceHitSchema
|
|
19785
|
+
]);
|
|
19786
|
+
var marketplaceDiscoveryInputSchema = external_exports.strictObject({
|
|
19787
|
+
q: external_exports.string().trim().max(200).optional(),
|
|
19788
|
+
kinds: external_exports.array(marketplaceKindSchema).min(1).max(MARKETPLACE_KINDS.length).optional(),
|
|
19789
|
+
network: external_exports.string().trim().min(1).max(160).optional(),
|
|
19790
|
+
cursor: external_exports.string().trim().min(1).max(4096).optional(),
|
|
19791
|
+
limit: external_exports.number().int().min(1).max(50).optional(),
|
|
19792
|
+
includeUnverified: external_exports.boolean().optional()
|
|
19793
|
+
}).superRefine((input2, context) => {
|
|
19794
|
+
if (input2.kinds && new Set(input2.kinds).size !== input2.kinds.length) {
|
|
19795
|
+
context.addIssue({
|
|
19796
|
+
code: "custom",
|
|
19797
|
+
path: ["kinds"],
|
|
19798
|
+
message: "Marketplace kinds must be unique"
|
|
19799
|
+
});
|
|
19800
|
+
}
|
|
19801
|
+
});
|
|
19802
|
+
var marketplaceDiscoveryPageSchema = external_exports.looseObject({
|
|
19803
|
+
protocol: external_exports.literal(MARKETPLACE_DISCOVERY_PROTOCOL),
|
|
19804
|
+
items: external_exports.array(marketplaceHitSchema),
|
|
19805
|
+
nextCursor: external_exports.string().min(1).max(4096).nullable(),
|
|
19806
|
+
unavailableKinds: external_exports.array(marketplaceKindSchema).max(MARKETPLACE_KINDS.length),
|
|
19807
|
+
rankingVersion: external_exports.literal(MARKETPLACE_RANKING_VERSION)
|
|
19808
|
+
});
|
|
19809
|
+
|
|
19673
19810
|
// ../core/src/call-contracts-wire.ts
|
|
19674
19811
|
var CALLABLE_CATEGORIES = ["ai", "data", "crypto", "compute", "search"];
|
|
19675
19812
|
var callableCategorySchema = external_exports.enum(CALLABLE_CATEGORIES);
|
|
@@ -19677,7 +19814,7 @@ var DISCOVERY_CATEGORIES = [...CALLABLE_CATEGORIES, "other"];
|
|
|
19677
19814
|
var discoveryCategorySchema = external_exports.enum(DISCOVERY_CATEGORIES);
|
|
19678
19815
|
var CALLABLE_CATEGORY_SET = new Set(CALLABLE_CATEGORIES);
|
|
19679
19816
|
var serviceTierSchema = external_exports.enum(["listed", "verified", "partner"]);
|
|
19680
|
-
var discoveryEndpointSchema = external_exports.
|
|
19817
|
+
var discoveryEndpointSchema = external_exports.looseObject({
|
|
19681
19818
|
name: external_exports.string(),
|
|
19682
19819
|
method: external_exports.string(),
|
|
19683
19820
|
url: external_exports.url(),
|
|
@@ -19689,7 +19826,7 @@ var discoveryEndpointSchema = external_exports.strictObject({
|
|
|
19689
19826
|
responseContentType: external_exports.string().trim().min(1).optional(),
|
|
19690
19827
|
pathTemplate: external_exports.string().trim().min(1).optional(),
|
|
19691
19828
|
pathParameters: external_exports.array(external_exports.string().trim().min(1)).optional(),
|
|
19692
|
-
payment: external_exports.
|
|
19829
|
+
payment: external_exports.looseObject({
|
|
19693
19830
|
scheme: external_exports.literal("exact"),
|
|
19694
19831
|
network: external_exports.string().regex(/^eip155:\d+$/),
|
|
19695
19832
|
asset: external_exports.string().regex(/^0x[0-9a-fA-F]{40}$/),
|
|
@@ -19697,19 +19834,20 @@ var discoveryEndpointSchema = external_exports.strictObject({
|
|
|
19697
19834
|
checkedAt: external_exports.iso.datetime()
|
|
19698
19835
|
}).optional()
|
|
19699
19836
|
});
|
|
19700
|
-
var serviceSummarySchema = external_exports.
|
|
19837
|
+
var serviceSummarySchema = external_exports.looseObject({
|
|
19701
19838
|
id: external_exports.string(),
|
|
19702
19839
|
name: external_exports.string(),
|
|
19703
19840
|
description: external_exports.string(),
|
|
19704
19841
|
category: discoveryCategorySchema,
|
|
19705
19842
|
tier: serviceTierSchema,
|
|
19843
|
+
...listingDisclosureShape,
|
|
19706
19844
|
verified: external_exports.boolean(),
|
|
19707
19845
|
wrapped: external_exports.boolean(),
|
|
19708
19846
|
price: external_exports.string(),
|
|
19709
19847
|
networks: external_exports.array(external_exports.string()),
|
|
19710
19848
|
endpoints: external_exports.array(discoveryEndpointSchema)
|
|
19711
19849
|
});
|
|
19712
|
-
var searchServicesResponseSchema = external_exports.
|
|
19850
|
+
var searchServicesResponseSchema = external_exports.looseObject({
|
|
19713
19851
|
services: external_exports.array(serviceSummarySchema)
|
|
19714
19852
|
});
|
|
19715
19853
|
var discoveryResponseSchema = searchServicesResponseSchema;
|
|
@@ -19745,19 +19883,21 @@ function parseDiscovery(raw) {
|
|
|
19745
19883
|
for (const service of parsed.data.services) {
|
|
19746
19884
|
buildTargets(service);
|
|
19747
19885
|
}
|
|
19886
|
+
const resolveListing = (serviceId, endpointName) => {
|
|
19887
|
+
const service = parsed.data.services.find((candidate) => candidate.id === serviceId);
|
|
19888
|
+
if (!service) {
|
|
19889
|
+
throw new DiscoveryCatalogError(
|
|
19890
|
+
"service_not_found",
|
|
19891
|
+
`No payable endpoint found for service ${JSON.stringify(serviceId)}.`,
|
|
19892
|
+
serviceId
|
|
19893
|
+
);
|
|
19894
|
+
}
|
|
19895
|
+
return { service, endpoint: resolveTarget(service, endpointName) };
|
|
19896
|
+
};
|
|
19748
19897
|
return {
|
|
19749
19898
|
services: parsed.data.services,
|
|
19750
|
-
resolve(serviceId, endpointName)
|
|
19751
|
-
|
|
19752
|
-
if (!service) {
|
|
19753
|
-
throw new DiscoveryCatalogError(
|
|
19754
|
-
"service_not_found",
|
|
19755
|
-
`No payable endpoint found for service ${JSON.stringify(serviceId)}.`,
|
|
19756
|
-
serviceId
|
|
19757
|
-
);
|
|
19758
|
-
}
|
|
19759
|
-
return resolveTarget(service, endpointName);
|
|
19760
|
-
}
|
|
19899
|
+
resolve: (serviceId, endpointName) => resolveListing(serviceId, endpointName).endpoint,
|
|
19900
|
+
resolveListing
|
|
19761
19901
|
};
|
|
19762
19902
|
}
|
|
19763
19903
|
function resolveTarget(service, endpointName) {
|
|
@@ -19860,16 +20000,15 @@ function rawServiceId(raw, serviceIndex) {
|
|
|
19860
20000
|
return typeof id === "string" ? id : void 0;
|
|
19861
20001
|
}
|
|
19862
20002
|
|
|
19863
|
-
// ../core/src/config.ts
|
|
19864
|
-
import { homedir } from "node:os";
|
|
19865
|
-
import { dirname, join } from "node:path";
|
|
19866
|
-
|
|
19867
20003
|
// ../../node_modules/.pnpm/viem@2.56.1_typescript@6.0.3_zod@4.5.4/node_modules/viem/_esm/index.js
|
|
19868
20004
|
init_getAddress();
|
|
19869
20005
|
|
|
19870
20006
|
// ../core/src/x402-networks.ts
|
|
19871
20007
|
var BASE_MAINNET_CAIP2 = "eip155:8453";
|
|
19872
20008
|
var ARC_TESTNET_CAIP2 = "eip155:5042002";
|
|
20009
|
+
var SOLANA_MAINNET_CAIP2 = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d";
|
|
20010
|
+
var X402_SOLANA_MAINNET_CAIP2 = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
20011
|
+
var SOLANA_MAINNET_USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
19873
20012
|
function canonicalIdentity(usdc, eip712Domain) {
|
|
19874
20013
|
return Object.freeze({
|
|
19875
20014
|
usdc: getAddress(usdc.toLowerCase()),
|
|
@@ -20102,6 +20241,7 @@ function guardError(url2) {
|
|
|
20102
20241
|
// ../core/src/networks.ts
|
|
20103
20242
|
var NETWORKS = {
|
|
20104
20243
|
[BASE_MAINNET_CAIP2]: {
|
|
20244
|
+
family: "evm",
|
|
20105
20245
|
chainId: 8453,
|
|
20106
20246
|
name: "Base mainnet",
|
|
20107
20247
|
usdc: CANONICAL_X402_USDC_NETWORKS[BASE_MAINNET_CAIP2].usdc,
|
|
@@ -20110,11 +20250,28 @@ var NETWORKS = {
|
|
|
20110
20250
|
publicRpcUrl: "https://mainnet.base.org"
|
|
20111
20251
|
},
|
|
20112
20252
|
[ARC_TESTNET_CAIP2]: {
|
|
20253
|
+
family: "evm",
|
|
20113
20254
|
chainId: 5042002,
|
|
20114
20255
|
name: "Arc testnet",
|
|
20115
20256
|
usdc: CANONICAL_X402_USDC_NETWORKS[ARC_TESTNET_CAIP2].usdc,
|
|
20116
20257
|
gasToken: "USDC",
|
|
20117
20258
|
rpcEnv: "ARC_TESTNET_RPC_URL"
|
|
20259
|
+
},
|
|
20260
|
+
[SOLANA_MAINNET_CAIP2]: {
|
|
20261
|
+
family: "svm",
|
|
20262
|
+
name: "Solana mainnet",
|
|
20263
|
+
usdc: SOLANA_MAINNET_USDC,
|
|
20264
|
+
gasToken: "SOL",
|
|
20265
|
+
rpcEnv: "SOLANA_RPC_URL",
|
|
20266
|
+
publicRpcUrl: "https://api.mainnet-beta.solana.com"
|
|
20267
|
+
},
|
|
20268
|
+
[X402_SOLANA_MAINNET_CAIP2]: {
|
|
20269
|
+
family: "svm",
|
|
20270
|
+
name: "Solana mainnet",
|
|
20271
|
+
usdc: SOLANA_MAINNET_USDC,
|
|
20272
|
+
gasToken: "SOL",
|
|
20273
|
+
rpcEnv: "SOLANA_RPC_URL",
|
|
20274
|
+
publicRpcUrl: "https://api.mainnet-beta.solana.com"
|
|
20118
20275
|
}
|
|
20119
20276
|
};
|
|
20120
20277
|
function parseEip155ChainId(network) {
|
|
@@ -20128,15 +20285,29 @@ function parseEip155ChainId(network) {
|
|
|
20128
20285
|
}
|
|
20129
20286
|
return chainId;
|
|
20130
20287
|
}
|
|
20288
|
+
function isSolanaNetwork(network) {
|
|
20289
|
+
return network === SOLANA_MAINNET_CAIP2 || network === X402_SOLANA_MAINNET_CAIP2;
|
|
20290
|
+
}
|
|
20291
|
+
function isSupportedPaymentNetwork(network) {
|
|
20292
|
+
if (isSolanaNetwork(network)) return true;
|
|
20293
|
+
try {
|
|
20294
|
+
parseEip155ChainId(network);
|
|
20295
|
+
return true;
|
|
20296
|
+
} catch {
|
|
20297
|
+
return false;
|
|
20298
|
+
}
|
|
20299
|
+
}
|
|
20131
20300
|
|
|
20132
20301
|
// ../core/src/config.ts
|
|
20302
|
+
import { homedir } from "node:os";
|
|
20303
|
+
import { dirname, join } from "node:path";
|
|
20133
20304
|
var DEFAULT_REGISTRY_URL = "https://api.vapinetwork.ai";
|
|
20134
20305
|
var DEFAULT_DISCOVERY_URL = `${DEFAULT_REGISTRY_URL}/api/call/services`;
|
|
20135
20306
|
var DEFAULT_MARKETPLACE_DISCOVERY_URL = `${DEFAULT_REGISTRY_URL}/api/call/discovery`;
|
|
20136
20307
|
var DEFAULT_REGISTRY_FALLBACKS = [
|
|
20137
20308
|
{
|
|
20138
|
-
discoveryUrl: "https://console.vapinetwork.ai/api/
|
|
20139
|
-
marketplaceDiscoveryUrl: "https://console.vapinetwork.ai/api/
|
|
20309
|
+
discoveryUrl: "https://console.vapinetwork.ai/api/call/services",
|
|
20310
|
+
marketplaceDiscoveryUrl: "https://console.vapinetwork.ai/api/call/discovery"
|
|
20140
20311
|
}
|
|
20141
20312
|
];
|
|
20142
20313
|
var atomicString = external_exports.string().regex(/^\d+$/, "Expected non-negative atomic units.");
|
|
@@ -20155,20 +20326,14 @@ var configSchema = external_exports.object({
|
|
|
20155
20326
|
).optional(),
|
|
20156
20327
|
allowPrivateNetwork: external_exports.boolean().default(false).optional(),
|
|
20157
20328
|
networks: external_exports.record(
|
|
20158
|
-
external_exports.string().refine(
|
|
20159
|
-
|
|
20160
|
-
|
|
20161
|
-
parseEip155ChainId(network);
|
|
20162
|
-
return true;
|
|
20163
|
-
} catch {
|
|
20164
|
-
return false;
|
|
20165
|
-
}
|
|
20166
|
-
},
|
|
20167
|
-
{ message: "Expected an eip155:<chainId> network identifier." }
|
|
20168
|
-
),
|
|
20329
|
+
external_exports.string().refine((network) => isSupportedPaymentNetwork(network), {
|
|
20330
|
+
message: "Expected a supported eip155:<chainId> or Solana network identifier."
|
|
20331
|
+
}),
|
|
20169
20332
|
external_exports.object({
|
|
20170
20333
|
rpcUrl: external_exports.string(),
|
|
20171
|
-
usdc: external_exports.string().
|
|
20334
|
+
usdc: external_exports.string().trim().min(1),
|
|
20335
|
+
depositUrl: external_exports.url().optional(),
|
|
20336
|
+
depositInstructions: external_exports.string().trim().min(1).max(500).optional(),
|
|
20172
20337
|
eip712Domain: external_exports.object({
|
|
20173
20338
|
name: external_exports.string().trim().min(1).max(64),
|
|
20174
20339
|
version: external_exports.string().trim().min(1).max(32)
|
|
@@ -20176,6 +20341,28 @@ var configSchema = external_exports.object({
|
|
|
20176
20341
|
})
|
|
20177
20342
|
),
|
|
20178
20343
|
spendCaps: spendCapsSchema
|
|
20344
|
+
}).superRefine((config2, context) => {
|
|
20345
|
+
for (const [network, configured] of Object.entries(config2.networks)) {
|
|
20346
|
+
if (isSolanaNetwork(network)) {
|
|
20347
|
+
if (configured.usdc !== NETWORKS[SOLANA_MAINNET_CAIP2].usdc) {
|
|
20348
|
+
context.addIssue({
|
|
20349
|
+
code: "custom",
|
|
20350
|
+
path: ["networks", network, "usdc"],
|
|
20351
|
+
message: "Expected canonical Solana mainnet USDC mint."
|
|
20352
|
+
});
|
|
20353
|
+
}
|
|
20354
|
+
continue;
|
|
20355
|
+
}
|
|
20356
|
+
try {
|
|
20357
|
+
getAddress(configured.usdc);
|
|
20358
|
+
} catch {
|
|
20359
|
+
context.addIssue({
|
|
20360
|
+
code: "custom",
|
|
20361
|
+
path: ["networks", network, "usdc"],
|
|
20362
|
+
message: "Expected a valid EVM USDC contract address."
|
|
20363
|
+
});
|
|
20364
|
+
}
|
|
20365
|
+
}
|
|
20179
20366
|
});
|
|
20180
20367
|
function getVapiPaths(directory = process.env.VAPI_HOME?.trim() || join(homedir(), ".vapi")) {
|
|
20181
20368
|
return {
|
|
@@ -20220,132 +20407,6 @@ async function appendSearchEvent(event, path = getVapiPaths().searches) {
|
|
|
20220
20407
|
return parsed;
|
|
20221
20408
|
}
|
|
20222
20409
|
|
|
20223
|
-
// ../core/src/marketplace-contracts.ts
|
|
20224
|
-
var MARKETPLACE_DISCOVERY_PROTOCOL = "vapi.marketplace.discovery/1";
|
|
20225
|
-
var MARKETPLACE_RANKING_VERSION = "marketplace-ranking-v1";
|
|
20226
|
-
var MARKETPLACE_KINDS = ["api", "service_offer", "open_request"];
|
|
20227
|
-
var MARKETPLACE_EXECUTION_METHODS = [
|
|
20228
|
-
"GET",
|
|
20229
|
-
"HEAD",
|
|
20230
|
-
"POST",
|
|
20231
|
-
"PUT",
|
|
20232
|
-
"PATCH",
|
|
20233
|
-
"DELETE"
|
|
20234
|
-
];
|
|
20235
|
-
var marketplaceExecutionMethodSchema = external_exports.enum(MARKETPLACE_EXECUTION_METHODS);
|
|
20236
|
-
var marketplaceKindSchema = external_exports.enum(MARKETPLACE_KINDS);
|
|
20237
|
-
var EXECUTION_MODES = ["direct", "gateway"];
|
|
20238
|
-
var executionModeSchema = external_exports.enum(EXECUTION_MODES);
|
|
20239
|
-
var PROVENANCES = ["indexed", "self_listed", "partner"];
|
|
20240
|
-
var provenanceSchema = external_exports.enum(PROVENANCES);
|
|
20241
|
-
var FIRST_PARTY_PROVENANCES = ["self_listed", "partner"];
|
|
20242
|
-
var firstPartyProvenanceSchema = external_exports.enum(FIRST_PARTY_PROVENANCES);
|
|
20243
|
-
var marketplaceBadgeCodeSchema = external_exports.enum([
|
|
20244
|
-
"live_x402",
|
|
20245
|
-
"partner",
|
|
20246
|
-
"payout_wallet_confirmed",
|
|
20247
|
-
"vapi_verified",
|
|
20248
|
-
"external_catalog",
|
|
20249
|
-
"approved_vendor"
|
|
20250
|
-
]);
|
|
20251
|
-
var marketplaceBadgeSchema = external_exports.strictObject({
|
|
20252
|
-
code: marketplaceBadgeCodeSchema,
|
|
20253
|
-
label: external_exports.string().trim().min(1).max(80)
|
|
20254
|
-
});
|
|
20255
|
-
var marketplacePublicFactSchema = external_exports.strictObject({
|
|
20256
|
-
label: external_exports.string().trim().min(1).max(80),
|
|
20257
|
-
value: external_exports.string().trim().min(1).max(160)
|
|
20258
|
-
});
|
|
20259
|
-
var marketplaceHrefSchema = external_exports.union([
|
|
20260
|
-
external_exports.string().trim().min(1).max(2048).regex(/^\/(?!\/)/),
|
|
20261
|
-
external_exports.url().max(2048).regex(/^https:\/\//)
|
|
20262
|
-
]);
|
|
20263
|
-
var marketplaceCardSchema = external_exports.strictObject({
|
|
20264
|
-
title: external_exports.string().trim().min(1).max(160),
|
|
20265
|
-
summary: external_exports.string().trim().min(1).max(1e3),
|
|
20266
|
-
byline: external_exports.string().trim().min(1).max(160).optional(),
|
|
20267
|
-
bylineHref: marketplaceHrefSchema.optional(),
|
|
20268
|
-
badges: external_exports.array(marketplaceBadgeSchema).max(8),
|
|
20269
|
-
facts: external_exports.array(marketplacePublicFactSchema).max(12)
|
|
20270
|
-
});
|
|
20271
|
-
var marketplaceHitBase = {
|
|
20272
|
-
ref: external_exports.string().trim().min(1).max(512),
|
|
20273
|
-
card: marketplaceCardSchema
|
|
20274
|
-
};
|
|
20275
|
-
var invokeApiActionSchema = external_exports.strictObject({
|
|
20276
|
-
type: external_exports.literal("invoke_api"),
|
|
20277
|
-
href: marketplaceHrefSchema
|
|
20278
|
-
});
|
|
20279
|
-
var firstPartyApiMarketplaceHitSchema = external_exports.strictObject({
|
|
20280
|
-
...marketplaceHitBase,
|
|
20281
|
-
kind: external_exports.literal("api"),
|
|
20282
|
-
provenance: firstPartyProvenanceSchema,
|
|
20283
|
-
execution: external_exports.strictObject({
|
|
20284
|
-
mode: executionModeSchema
|
|
20285
|
-
}),
|
|
20286
|
-
action: invokeApiActionSchema
|
|
20287
|
-
});
|
|
20288
|
-
var mirroredApiMarketplaceHitSchema = external_exports.strictObject({
|
|
20289
|
-
...marketplaceHitBase,
|
|
20290
|
-
kind: external_exports.literal("api"),
|
|
20291
|
-
provenance: external_exports.literal("indexed"),
|
|
20292
|
-
execution: external_exports.strictObject({
|
|
20293
|
-
mode: external_exports.literal("direct"),
|
|
20294
|
-
url: external_exports.url().max(2048).regex(/^https:\/\/(?![^/?#]*@)/),
|
|
20295
|
-
method: marketplaceExecutionMethodSchema.nullable(),
|
|
20296
|
-
network: external_exports.string().trim().max(160).regex(/^eip155:[1-9]\d*$/)
|
|
20297
|
-
}),
|
|
20298
|
-
action: invokeApiActionSchema
|
|
20299
|
-
});
|
|
20300
|
-
var apiMarketplaceHitSchema = external_exports.discriminatedUnion("provenance", [
|
|
20301
|
-
firstPartyApiMarketplaceHitSchema,
|
|
20302
|
-
mirroredApiMarketplaceHitSchema
|
|
20303
|
-
]);
|
|
20304
|
-
var serviceOfferMarketplaceHitSchema = external_exports.strictObject({
|
|
20305
|
-
...marketplaceHitBase,
|
|
20306
|
-
kind: external_exports.literal("service_offer"),
|
|
20307
|
-
action: external_exports.strictObject({
|
|
20308
|
-
type: external_exports.literal("start_engagement"),
|
|
20309
|
-
href: marketplaceHrefSchema
|
|
20310
|
-
})
|
|
20311
|
-
});
|
|
20312
|
-
var openRequestMarketplaceHitSchema = external_exports.strictObject({
|
|
20313
|
-
...marketplaceHitBase,
|
|
20314
|
-
kind: external_exports.literal("open_request"),
|
|
20315
|
-
action: external_exports.strictObject({
|
|
20316
|
-
type: external_exports.literal("propose_to_request"),
|
|
20317
|
-
href: marketplaceHrefSchema
|
|
20318
|
-
})
|
|
20319
|
-
});
|
|
20320
|
-
var marketplaceHitSchema = external_exports.union([
|
|
20321
|
-
apiMarketplaceHitSchema,
|
|
20322
|
-
serviceOfferMarketplaceHitSchema,
|
|
20323
|
-
openRequestMarketplaceHitSchema
|
|
20324
|
-
]);
|
|
20325
|
-
var marketplaceDiscoveryInputSchema = external_exports.strictObject({
|
|
20326
|
-
q: external_exports.string().trim().max(200).optional(),
|
|
20327
|
-
kinds: external_exports.array(marketplaceKindSchema).min(1).max(MARKETPLACE_KINDS.length).optional(),
|
|
20328
|
-
network: external_exports.string().trim().min(1).max(160).optional(),
|
|
20329
|
-
cursor: external_exports.string().trim().min(1).max(4096).optional(),
|
|
20330
|
-
limit: external_exports.number().int().min(1).max(50).optional(),
|
|
20331
|
-
includeUnverified: external_exports.boolean().optional()
|
|
20332
|
-
}).superRefine((input2, context) => {
|
|
20333
|
-
if (input2.kinds && new Set(input2.kinds).size !== input2.kinds.length) {
|
|
20334
|
-
context.addIssue({
|
|
20335
|
-
code: "custom",
|
|
20336
|
-
path: ["kinds"],
|
|
20337
|
-
message: "Marketplace kinds must be unique"
|
|
20338
|
-
});
|
|
20339
|
-
}
|
|
20340
|
-
});
|
|
20341
|
-
var marketplaceDiscoveryPageSchema = external_exports.strictObject({
|
|
20342
|
-
protocol: external_exports.literal(MARKETPLACE_DISCOVERY_PROTOCOL),
|
|
20343
|
-
items: external_exports.array(marketplaceHitSchema),
|
|
20344
|
-
nextCursor: external_exports.string().min(1).max(4096).nullable(),
|
|
20345
|
-
unavailableKinds: external_exports.array(marketplaceKindSchema).max(MARKETPLACE_KINDS.length),
|
|
20346
|
-
rankingVersion: external_exports.literal(MARKETPLACE_RANKING_VERSION)
|
|
20347
|
-
});
|
|
20348
|
-
|
|
20349
20410
|
// src/common.ts
|
|
20350
20411
|
function sourceFetch(options) {
|
|
20351
20412
|
return options.fetch ?? createPublicFetch({
|
|
@@ -20650,8 +20711,11 @@ async function searchMarketplace(input2, config2, fetchImpl, options = {}) {
|
|
|
20650
20711
|
}
|
|
20651
20712
|
}
|
|
20652
20713
|
async function resolveServiceEndpoint(id, config2, fetchImpl, endpointName) {
|
|
20714
|
+
return (await resolveServiceListing(id, config2, fetchImpl, endpointName)).endpoint;
|
|
20715
|
+
}
|
|
20716
|
+
async function resolveServiceListing(id, config2, fetchImpl, endpointName) {
|
|
20653
20717
|
const request = fetchImpl ?? createPublicFetch({ allowPrivateNetwork: config2.allowPrivateNetwork ?? false });
|
|
20654
|
-
return (await fetchCallsDiscovery(id, config2, request)).
|
|
20718
|
+
return (await fetchCallsDiscovery(id, config2, request)).resolveListing(id, endpointName);
|
|
20655
20719
|
}
|
|
20656
20720
|
async function findMarketplaceApiByRef(ref, config2, fetchImpl) {
|
|
20657
20721
|
const page = await searchMarketplace(
|
|
@@ -20779,11 +20843,19 @@ function endpointListing(endpoint, ref, config2, metadata = {}) {
|
|
|
20779
20843
|
provenance: [{ source: "vapi", sourceUrl: config2.marketplaceDiscoveryUrl, ref }]
|
|
20780
20844
|
};
|
|
20781
20845
|
}
|
|
20846
|
+
var REGISTRY_ENDPOINT_PATHS = [
|
|
20847
|
+
"/api/call/discovery",
|
|
20848
|
+
"/api/call/services",
|
|
20849
|
+
"/api/marketplace/discovery",
|
|
20850
|
+
"/api/network/services"
|
|
20851
|
+
];
|
|
20782
20852
|
function registryConfig(baseUrl, discoveryUrl, allowPrivateNetwork) {
|
|
20783
20853
|
const supplied = new URL(baseUrl);
|
|
20784
20854
|
const path = supplied.pathname.replace(/\/+$/, "");
|
|
20785
|
-
const
|
|
20786
|
-
const
|
|
20855
|
+
const endpoint = REGISTRY_ENDPOINT_PATHS.find((candidate) => path.endsWith(candidate));
|
|
20856
|
+
const canonical = (target) => endpoint ? replacePath(supplied, endpoint, target).href : appendPath(supplied.href, target).href;
|
|
20857
|
+
const marketplaceDiscoveryUrl = canonical("/api/call/discovery");
|
|
20858
|
+
const callsDiscoveryUrl = discoveryUrl ?? canonical("/api/call/services");
|
|
20787
20859
|
return {
|
|
20788
20860
|
marketplaceDiscoveryUrl,
|
|
20789
20861
|
discoveryUrl: callsDiscoveryUrl,
|
|
@@ -20894,6 +20966,7 @@ export {
|
|
|
20894
20966
|
localFileSource,
|
|
20895
20967
|
mapBazaarItem,
|
|
20896
20968
|
resolveServiceEndpoint,
|
|
20969
|
+
resolveServiceListing,
|
|
20897
20970
|
searchMarketplace,
|
|
20898
20971
|
vapiRegistrySource,
|
|
20899
20972
|
x402scanSource
|