@hasna/domains 0.0.1
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/README.md +119 -0
- package/dist/cli/commands/alerts.d.ts +3 -0
- package/dist/cli/commands/alerts.d.ts.map +1 -0
- package/dist/cli/commands/brandsight.d.ts +3 -0
- package/dist/cli/commands/brandsight.d.ts.map +1 -0
- package/dist/cli/commands/dns.d.ts +3 -0
- package/dist/cli/commands/dns.d.ts.map +1 -0
- package/dist/cli/commands/domains.d.ts +3 -0
- package/dist/cli/commands/domains.d.ts.map +1 -0
- package/dist/cli/commands/providers.d.ts +3 -0
- package/dist/cli/commands/providers.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +13793 -0
- package/dist/db/alerts.d.ts +21 -0
- package/dist/db/alerts.d.ts.map +1 -0
- package/dist/db/database.d.ts +7 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/dns-records.d.ts +46 -0
- package/dist/db/dns-records.d.ts.map +1 -0
- package/dist/db/dns-tools.d.ts +62 -0
- package/dist/db/dns-tools.d.ts.map +1 -0
- package/dist/db/domain-records.d.ts +97 -0
- package/dist/db/domain-records.d.ts.map +1 -0
- package/dist/db/domains.d.ts +17 -0
- package/dist/db/domains.d.ts.map +1 -0
- package/dist/db/migrations.d.ts +7 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/monitoring.d.ts +25 -0
- package/dist/db/monitoring.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10376 -0
- package/dist/lib/brandsight.d.ts +55 -0
- package/dist/lib/brandsight.d.ts.map +1 -0
- package/dist/lib/godaddy.d.ts +70 -0
- package/dist/lib/godaddy.d.ts.map +1 -0
- package/dist/lib/namecheap.d.ts +89 -0
- package/dist/lib/namecheap.d.ts.map +1 -0
- package/dist/lib/registrar.d.ts +71 -0
- package/dist/lib/registrar.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15499 -0
- package/package.json +71 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brandsight API integration for brand monitoring and threat detection
|
|
3
|
+
*
|
|
4
|
+
* Requires environment variable:
|
|
5
|
+
* BRANDSIGHT_API_KEY — API key for Brandsight
|
|
6
|
+
*/
|
|
7
|
+
export interface BrandsightConfig {
|
|
8
|
+
apiKey: string;
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface BrandsightAlert {
|
|
12
|
+
domain: string;
|
|
13
|
+
type: "typosquat" | "homoglyph" | "keyword" | "tld_variation";
|
|
14
|
+
registered_at: string;
|
|
15
|
+
}
|
|
16
|
+
export interface BrandMonitorResult {
|
|
17
|
+
brand: string;
|
|
18
|
+
alerts: BrandsightAlert[];
|
|
19
|
+
stub: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface WhoisHistoryEntry {
|
|
22
|
+
registrant: string;
|
|
23
|
+
date: string;
|
|
24
|
+
changes: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface WhoisHistoryResult {
|
|
27
|
+
domain: string;
|
|
28
|
+
history: WhoisHistoryEntry[];
|
|
29
|
+
stub: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface ThreatAssessment {
|
|
32
|
+
domain: string;
|
|
33
|
+
risk_level: "low" | "medium" | "high" | "critical";
|
|
34
|
+
threats: string[];
|
|
35
|
+
recommendation: string;
|
|
36
|
+
stub: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class BrandsightApiError extends Error {
|
|
39
|
+
statusCode?: number | undefined;
|
|
40
|
+
responseBody?: string | undefined;
|
|
41
|
+
constructor(message: string, statusCode?: number | undefined, responseBody?: string | undefined);
|
|
42
|
+
}
|
|
43
|
+
type FetchFn = typeof globalThis.fetch;
|
|
44
|
+
export declare function _setFetch(fn: FetchFn | null): void;
|
|
45
|
+
export declare function getApiKey(): string;
|
|
46
|
+
export declare function monitorBrand(brandName: string): Promise<BrandMonitorResult>;
|
|
47
|
+
export declare function getSimilarDomains(domain: string): Promise<{
|
|
48
|
+
domain: string;
|
|
49
|
+
similar: string[];
|
|
50
|
+
stub: boolean;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function getWhoisHistory(domain: string): Promise<WhoisHistoryResult>;
|
|
53
|
+
export declare function getThreatAssessment(domain: string): Promise<ThreatAssessment>;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=brandsight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brandsight.d.ts","sourceRoot":"","sources":["../../src/lib/brandsight.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;IAC9D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAGlC,UAAU,CAAC,EAAE,MAAM;IACnB,YAAY,CAAC,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACR,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,YAAY,CAAC,EAAE,MAAM,YAAA;CAK/B;AAMD,KAAK,OAAO,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC;AAIvC,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAElD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAQlC;AA6FD,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYjF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAYrH;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYjF;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAYnF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GoDaddy API integration for domain management
|
|
3
|
+
*
|
|
4
|
+
* Environment variables:
|
|
5
|
+
* GODADDY_API_KEY — GoDaddy API key
|
|
6
|
+
* GODADDY_API_SECRET — GoDaddy API secret
|
|
7
|
+
*/
|
|
8
|
+
import type { CreateDomainInput, UpdateDomainInput, Domain } from "../db/domains.js";
|
|
9
|
+
export interface GoDaddyConfig {
|
|
10
|
+
apiKey: string;
|
|
11
|
+
apiSecret: string;
|
|
12
|
+
}
|
|
13
|
+
export interface GoDaddyDomain {
|
|
14
|
+
domain: string;
|
|
15
|
+
domainId?: number;
|
|
16
|
+
status: string;
|
|
17
|
+
expires: string;
|
|
18
|
+
renewAuto: boolean;
|
|
19
|
+
nameServers?: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface GoDaddyDomainDetail extends GoDaddyDomain {
|
|
22
|
+
createdAt?: string;
|
|
23
|
+
locked?: boolean;
|
|
24
|
+
privacy?: boolean;
|
|
25
|
+
domainId?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface GoDaddyDnsRecord {
|
|
28
|
+
type: string;
|
|
29
|
+
name: string;
|
|
30
|
+
data: string;
|
|
31
|
+
ttl: number;
|
|
32
|
+
priority?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface GoDaddyAvailability {
|
|
35
|
+
domain: string;
|
|
36
|
+
available: boolean;
|
|
37
|
+
price?: number;
|
|
38
|
+
currency?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface GoDaddyRenewResponse {
|
|
41
|
+
orderId: number;
|
|
42
|
+
itemCount: number;
|
|
43
|
+
total: number;
|
|
44
|
+
}
|
|
45
|
+
export declare class GoDaddyApiError extends Error {
|
|
46
|
+
statusCode?: number | undefined;
|
|
47
|
+
details?: unknown | undefined;
|
|
48
|
+
constructor(message: string, statusCode?: number | undefined, details?: unknown | undefined);
|
|
49
|
+
}
|
|
50
|
+
export interface GoDaddySyncResult {
|
|
51
|
+
synced: number;
|
|
52
|
+
created: number;
|
|
53
|
+
updated: number;
|
|
54
|
+
errors: string[];
|
|
55
|
+
}
|
|
56
|
+
type FetchFn = typeof globalThis.fetch;
|
|
57
|
+
export declare function _setFetch(fn: FetchFn | null): void;
|
|
58
|
+
export declare function listGoDaddyDomains(): Promise<GoDaddyDomain[]>;
|
|
59
|
+
export declare function getDomainInfo(domain: string): Promise<GoDaddyDomainDetail>;
|
|
60
|
+
export declare function renewDomain(domain: string): Promise<GoDaddyRenewResponse>;
|
|
61
|
+
export declare function getDnsRecords(domain: string, type?: string): Promise<GoDaddyDnsRecord[]>;
|
|
62
|
+
export declare function setDnsRecords(domain: string, records: GoDaddyDnsRecord[]): Promise<void>;
|
|
63
|
+
export declare function checkAvailability(domain: string): Promise<GoDaddyAvailability>;
|
|
64
|
+
export declare function syncToLocalDb(dbFns: {
|
|
65
|
+
getDomainByName: (name: string) => Domain | null;
|
|
66
|
+
createDomain: (input: CreateDomainInput) => Domain;
|
|
67
|
+
updateDomain: (id: string, input: UpdateDomainInput) => Domain | null;
|
|
68
|
+
}): Promise<GoDaddySyncResult>;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=godaddy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"godaddy.d.ts","sourceRoot":"","sources":["../../src/lib/godaddy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Namecheap API integration for domain management
|
|
3
|
+
*
|
|
4
|
+
* Requires environment variables:
|
|
5
|
+
* NAMECHEAP_API_KEY — API key from Namecheap
|
|
6
|
+
* NAMECHEAP_USERNAME — Namecheap account username
|
|
7
|
+
* NAMECHEAP_CLIENT_IP — Whitelisted client IP address
|
|
8
|
+
*/
|
|
9
|
+
export interface NamecheapConfig {
|
|
10
|
+
apiKey: string;
|
|
11
|
+
username: string;
|
|
12
|
+
clientIp: string;
|
|
13
|
+
sandbox?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface NamecheapDomain {
|
|
16
|
+
domain: string;
|
|
17
|
+
expiry: string;
|
|
18
|
+
autoRenew: boolean;
|
|
19
|
+
isExpired: boolean;
|
|
20
|
+
isLocked: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface NamecheapDomainInfo {
|
|
23
|
+
domain: string;
|
|
24
|
+
registrar: string;
|
|
25
|
+
created: string;
|
|
26
|
+
expires: string;
|
|
27
|
+
nameservers: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface NamecheapDnsRecord {
|
|
30
|
+
type: string;
|
|
31
|
+
name: string;
|
|
32
|
+
address: string;
|
|
33
|
+
ttl: number;
|
|
34
|
+
mxPref?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface NamecheapAvailability {
|
|
37
|
+
domain: string;
|
|
38
|
+
available: boolean;
|
|
39
|
+
premium: boolean;
|
|
40
|
+
price?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface NamecheapRenewResult {
|
|
43
|
+
domain: string;
|
|
44
|
+
success: boolean;
|
|
45
|
+
orderId?: string;
|
|
46
|
+
chargedAmount?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface NamecheapSyncResult {
|
|
49
|
+
synced: number;
|
|
50
|
+
errors: string[];
|
|
51
|
+
domains: string[];
|
|
52
|
+
}
|
|
53
|
+
export declare function getConfig(): NamecheapConfig;
|
|
54
|
+
export declare function listNamecheapDomains(config?: NamecheapConfig): Promise<NamecheapDomain[]>;
|
|
55
|
+
export declare function getDomainInfo(domain: string, config?: NamecheapConfig): Promise<NamecheapDomainInfo>;
|
|
56
|
+
export declare function renewDomain(domain: string, years?: number, config?: NamecheapConfig): Promise<NamecheapRenewResult>;
|
|
57
|
+
export declare function getDnsRecords(_domain: string, sld: string, tld: string, config?: NamecheapConfig): Promise<NamecheapDnsRecord[]>;
|
|
58
|
+
export declare function setDnsRecords(_domain: string, sld: string, tld: string, records: NamecheapDnsRecord[], config?: NamecheapConfig): Promise<boolean>;
|
|
59
|
+
export declare function checkAvailability(domain: string, config?: NamecheapConfig): Promise<NamecheapAvailability>;
|
|
60
|
+
export declare function splitDomain(domain: string): {
|
|
61
|
+
sld: string;
|
|
62
|
+
tld: string;
|
|
63
|
+
};
|
|
64
|
+
export declare function syncToLocalDb(dbFunctions: {
|
|
65
|
+
getDomainByName: (name: string) => {
|
|
66
|
+
id: string;
|
|
67
|
+
} | null;
|
|
68
|
+
createDomain: (input: {
|
|
69
|
+
name: string;
|
|
70
|
+
registrar?: string;
|
|
71
|
+
status?: "active" | "expired" | "transferring" | "redemption";
|
|
72
|
+
registered_at?: string;
|
|
73
|
+
expires_at?: string;
|
|
74
|
+
auto_renew?: boolean;
|
|
75
|
+
nameservers?: string[];
|
|
76
|
+
}) => {
|
|
77
|
+
id: string;
|
|
78
|
+
name: string;
|
|
79
|
+
};
|
|
80
|
+
updateDomain: (id: string, input: {
|
|
81
|
+
registrar?: string;
|
|
82
|
+
status?: "active" | "expired" | "transferring" | "redemption";
|
|
83
|
+
registered_at?: string;
|
|
84
|
+
expires_at?: string;
|
|
85
|
+
auto_renew?: boolean;
|
|
86
|
+
nameservers?: string[];
|
|
87
|
+
}) => unknown;
|
|
88
|
+
}, config?: NamecheapConfig): Promise<NamecheapSyncResult>;
|
|
89
|
+
//# sourceMappingURL=namecheap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namecheap.d.ts","sourceRoot":"","sources":["../../src/lib/namecheap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified registrar provider system
|
|
3
|
+
*
|
|
4
|
+
* Wraps Namecheap and GoDaddy into a common RegistrarProvider interface.
|
|
5
|
+
*/
|
|
6
|
+
import type { Domain, CreateDomainInput, UpdateDomainInput } from "../db/domains.js";
|
|
7
|
+
export interface ProviderDnsRecord {
|
|
8
|
+
type: string;
|
|
9
|
+
name: string;
|
|
10
|
+
value: string;
|
|
11
|
+
ttl: number;
|
|
12
|
+
priority?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ProviderDomainInfo {
|
|
15
|
+
domain: string;
|
|
16
|
+
registrar: string;
|
|
17
|
+
created: string;
|
|
18
|
+
expires: string;
|
|
19
|
+
nameservers: string[];
|
|
20
|
+
status: string;
|
|
21
|
+
auto_renew: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ProviderRenewResult {
|
|
24
|
+
domain: string;
|
|
25
|
+
success: boolean;
|
|
26
|
+
orderId?: string;
|
|
27
|
+
chargedAmount?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ProviderSyncResult {
|
|
30
|
+
synced: number;
|
|
31
|
+
created: number;
|
|
32
|
+
updated: number;
|
|
33
|
+
errors: string[];
|
|
34
|
+
}
|
|
35
|
+
export interface ProviderAvailability {
|
|
36
|
+
domain: string;
|
|
37
|
+
available: boolean;
|
|
38
|
+
}
|
|
39
|
+
export type DbFunctions = {
|
|
40
|
+
getDomainByName: (name: string) => Domain | null;
|
|
41
|
+
createDomain: (input: CreateDomainInput) => Domain;
|
|
42
|
+
updateDomain: (id: string, input: UpdateDomainInput) => Domain | null;
|
|
43
|
+
};
|
|
44
|
+
export interface RegistrarProvider {
|
|
45
|
+
name: string;
|
|
46
|
+
listDomains(): Promise<ProviderDomainInfo[]>;
|
|
47
|
+
getDomainInfo(domain: string): Promise<ProviderDomainInfo>;
|
|
48
|
+
renewDomain(domain: string): Promise<ProviderRenewResult>;
|
|
49
|
+
getDnsRecords(domain: string): Promise<ProviderDnsRecord[]>;
|
|
50
|
+
setDnsRecords(domain: string, records: ProviderDnsRecord[]): Promise<boolean>;
|
|
51
|
+
checkAvailability(domain: string): Promise<ProviderAvailability>;
|
|
52
|
+
syncToLocalDb(dbFns: DbFunctions): Promise<ProviderSyncResult>;
|
|
53
|
+
}
|
|
54
|
+
export interface ProviderInfo {
|
|
55
|
+
name: string;
|
|
56
|
+
configured: boolean;
|
|
57
|
+
envVars: string[];
|
|
58
|
+
}
|
|
59
|
+
export interface SyncAllResult {
|
|
60
|
+
providers: {
|
|
61
|
+
name: string;
|
|
62
|
+
result: ProviderSyncResult;
|
|
63
|
+
}[];
|
|
64
|
+
totalSynced: number;
|
|
65
|
+
totalErrors: string[];
|
|
66
|
+
}
|
|
67
|
+
export declare function getProvider(name: "namecheap" | "godaddy"): RegistrarProvider;
|
|
68
|
+
export declare function getAvailableProviders(): ProviderInfo[];
|
|
69
|
+
export declare function syncAll(dbFns: DbFunctions): Promise<SyncAllResult>;
|
|
70
|
+
export declare function autoDetectRegistrar(domain: string, getDomainByName: (name: string) => Domain | null): "namecheap" | "godaddy" | null;
|
|
71
|
+
//# sourceMappingURL=registrar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/lib/registrar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,YAAY,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,MAAM,CAAC;IACnD,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,MAAM,GAAG,IAAI,CAAC;CACvE,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjE,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,EAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAqLD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,iBAAiB,CAS5E;AAED,wBAAgB,qBAAqB,IAAI,YAAY,EAAE,CAsBtD;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA6BxE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAC/C,WAAW,GAAG,SAAS,GAAG,IAAI,CAQhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":""}
|