@corsair-dev/exa 0.1.0 → 0.1.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/dist/api.test.d.ts +2 -0
- package/dist/api.test.d.ts.map +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/endpoints/answer.d.ts +1 -1
- package/dist/endpoints/answer.d.ts.map +1 -1
- package/dist/endpoints/contents.d.ts +1 -1
- package/dist/endpoints/contents.d.ts.map +1 -1
- package/dist/endpoints/events.d.ts +1 -1
- package/dist/endpoints/events.d.ts.map +1 -1
- package/dist/endpoints/imports.d.ts +1 -1
- package/dist/endpoints/imports.d.ts.map +1 -1
- package/dist/endpoints/index.d.ts +7 -7
- package/dist/endpoints/monitors.d.ts +1 -1
- package/dist/endpoints/monitors.d.ts.map +1 -1
- package/dist/endpoints/search.d.ts +1 -1
- package/dist/endpoints/search.d.ts.map +1 -1
- package/dist/endpoints/types.d.ts +30 -30
- package/dist/endpoints/types.d.ts.map +1 -1
- package/dist/endpoints/webhooks-api.d.ts +1 -1
- package/dist/endpoints/webhooks-api.d.ts.map +1 -1
- package/dist/endpoints/websets.d.ts +1 -1
- package/dist/endpoints/websets.d.ts.map +1 -1
- package/dist/error-handlers.d.ts.map +1 -1
- package/dist/index.d.ts +28 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/schema/database.d.ts +2 -2
- package/dist/schema/index.d.ts +2 -2
- package/dist/webhooks/content-indexed.d.ts +1 -1
- package/dist/webhooks/content-indexed.d.ts.map +1 -1
- package/dist/webhooks/index.d.ts +20 -20
- package/dist/webhooks/search-alert.d.ts +1 -1
- package/dist/webhooks/search-alert.d.ts.map +1 -1
- package/dist/webhooks/types.d.ts +37 -37
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/webhooks/webset-items-found.d.ts +1 -1
- package/dist/webhooks/webset-items-found.d.ts.map +1 -1
- package/dist/webhooks/webset-search-completed.d.ts +1 -1
- package/dist/webhooks/webset-search-completed.d.ts.map +1 -1
- package/package.json +9 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { BindEndpoints, BindWebhooks, CorsairEndpoint, CorsairErrorHandler, CorsairPlugin, CorsairPluginContext, CorsairWebhook, KeyBuilderContext, PluginPermissionsConfig } from 'corsair/core';
|
|
2
|
-
import type { PickAuth } from 'corsair/core';
|
|
1
|
+
import type { BindEndpoints, BindWebhooks, CorsairEndpoint, CorsairErrorHandler, CorsairPlugin, CorsairPluginContext, CorsairWebhook, KeyBuilderContext, PickAuth, PluginPermissionsConfig } from 'corsair/core';
|
|
3
2
|
import type { ExaEndpointInputs, ExaEndpointOutputs } from './endpoints/types';
|
|
4
3
|
import { ExaSchema } from './schema';
|
|
5
4
|
import type { ContentIndexedEvent, ExaWebhookOutputs, SearchAlertEvent, WebsetItemsFoundEvent, WebsetSearchCompletedEvent } from './webhooks/types';
|
|
@@ -866,8 +865,8 @@ export declare const exaEndpointSchemas: {
|
|
|
866
865
|
updatedAt: import("zod").ZodString;
|
|
867
866
|
}, "strip", import("zod").ZodTypeAny, {
|
|
868
867
|
object: "webset";
|
|
869
|
-
id: string;
|
|
870
868
|
status: "idle" | "running" | "paused" | "done";
|
|
869
|
+
id: string;
|
|
871
870
|
createdAt: string;
|
|
872
871
|
updatedAt: string;
|
|
873
872
|
externalId?: string | undefined;
|
|
@@ -911,8 +910,8 @@ export declare const exaEndpointSchemas: {
|
|
|
911
910
|
}[] | undefined;
|
|
912
911
|
}, {
|
|
913
912
|
object: "webset";
|
|
914
|
-
id: string;
|
|
915
913
|
status: "idle" | "running" | "paused" | "done";
|
|
914
|
+
id: string;
|
|
916
915
|
createdAt: string;
|
|
917
916
|
updatedAt: string;
|
|
918
917
|
externalId?: string | undefined;
|
|
@@ -1093,8 +1092,8 @@ export declare const exaEndpointSchemas: {
|
|
|
1093
1092
|
updatedAt: import("zod").ZodString;
|
|
1094
1093
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1095
1094
|
object: "webset";
|
|
1096
|
-
id: string;
|
|
1097
1095
|
status: "idle" | "running" | "paused" | "done";
|
|
1096
|
+
id: string;
|
|
1098
1097
|
createdAt: string;
|
|
1099
1098
|
updatedAt: string;
|
|
1100
1099
|
externalId?: string | undefined;
|
|
@@ -1138,8 +1137,8 @@ export declare const exaEndpointSchemas: {
|
|
|
1138
1137
|
}[] | undefined;
|
|
1139
1138
|
}, {
|
|
1140
1139
|
object: "webset";
|
|
1141
|
-
id: string;
|
|
1142
1140
|
status: "idle" | "running" | "paused" | "done";
|
|
1141
|
+
id: string;
|
|
1143
1142
|
createdAt: string;
|
|
1144
1143
|
updatedAt: string;
|
|
1145
1144
|
externalId?: string | undefined;
|
|
@@ -1249,12 +1248,12 @@ export declare const exaEndpointSchemas: {
|
|
|
1249
1248
|
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1250
1249
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1251
1250
|
websetId: string;
|
|
1252
|
-
limit?: number | undefined;
|
|
1253
1251
|
cursor?: string | undefined;
|
|
1252
|
+
limit?: number | undefined;
|
|
1254
1253
|
}, {
|
|
1255
1254
|
websetId: string;
|
|
1256
|
-
limit?: number | undefined;
|
|
1257
1255
|
cursor?: string | undefined;
|
|
1256
|
+
limit?: number | undefined;
|
|
1258
1257
|
}>;
|
|
1259
1258
|
readonly output: import("zod").ZodObject<{
|
|
1260
1259
|
data: import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -1393,12 +1392,12 @@ export declare const exaEndpointSchemas: {
|
|
|
1393
1392
|
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1394
1393
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1395
1394
|
websetId: string;
|
|
1396
|
-
limit?: number | undefined;
|
|
1397
1395
|
cursor?: string | undefined;
|
|
1396
|
+
limit?: number | undefined;
|
|
1398
1397
|
}, {
|
|
1399
1398
|
websetId: string;
|
|
1400
|
-
limit?: number | undefined;
|
|
1401
1399
|
cursor?: string | undefined;
|
|
1400
|
+
limit?: number | undefined;
|
|
1402
1401
|
}>;
|
|
1403
1402
|
readonly output: import("zod").ZodObject<{
|
|
1404
1403
|
data: import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -1409,14 +1408,14 @@ export declare const exaEndpointSchemas: {
|
|
|
1409
1408
|
data: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
1410
1409
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1411
1410
|
object: "event";
|
|
1412
|
-
id: string;
|
|
1413
1411
|
type: string;
|
|
1412
|
+
id: string;
|
|
1414
1413
|
createdAt: string;
|
|
1415
1414
|
data?: unknown;
|
|
1416
1415
|
}, {
|
|
1417
1416
|
object: "event";
|
|
1418
|
-
id: string;
|
|
1419
1417
|
type: string;
|
|
1418
|
+
id: string;
|
|
1420
1419
|
createdAt: string;
|
|
1421
1420
|
data?: unknown;
|
|
1422
1421
|
}>, "many">;
|
|
@@ -1425,8 +1424,8 @@ export declare const exaEndpointSchemas: {
|
|
|
1425
1424
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1426
1425
|
data: {
|
|
1427
1426
|
object: "event";
|
|
1428
|
-
id: string;
|
|
1429
1427
|
type: string;
|
|
1428
|
+
id: string;
|
|
1430
1429
|
createdAt: string;
|
|
1431
1430
|
data?: unknown;
|
|
1432
1431
|
}[];
|
|
@@ -1435,8 +1434,8 @@ export declare const exaEndpointSchemas: {
|
|
|
1435
1434
|
}, {
|
|
1436
1435
|
data: {
|
|
1437
1436
|
object: "event";
|
|
1438
|
-
id: string;
|
|
1439
1437
|
type: string;
|
|
1438
|
+
id: string;
|
|
1440
1439
|
createdAt: string;
|
|
1441
1440
|
data?: unknown;
|
|
1442
1441
|
}[];
|
|
@@ -1463,14 +1462,14 @@ export declare const exaEndpointSchemas: {
|
|
|
1463
1462
|
data: import("zod").ZodOptional<import("zod").ZodUnknown>;
|
|
1464
1463
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1465
1464
|
object: "event";
|
|
1466
|
-
id: string;
|
|
1467
1465
|
type: string;
|
|
1466
|
+
id: string;
|
|
1468
1467
|
createdAt: string;
|
|
1469
1468
|
data?: unknown;
|
|
1470
1469
|
}, {
|
|
1471
1470
|
object: "event";
|
|
1472
|
-
id: string;
|
|
1473
1471
|
type: string;
|
|
1472
|
+
id: string;
|
|
1474
1473
|
createdAt: string;
|
|
1475
1474
|
data?: unknown;
|
|
1476
1475
|
}>;
|
|
@@ -1480,11 +1479,11 @@ export declare const exaEndpointSchemas: {
|
|
|
1480
1479
|
cursor: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1481
1480
|
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1482
1481
|
}, "strip", import("zod").ZodTypeAny, {
|
|
1483
|
-
limit?: number | undefined;
|
|
1484
1482
|
cursor?: string | undefined;
|
|
1485
|
-
}, {
|
|
1486
1483
|
limit?: number | undefined;
|
|
1484
|
+
}, {
|
|
1487
1485
|
cursor?: string | undefined;
|
|
1486
|
+
limit?: number | undefined;
|
|
1488
1487
|
}>;
|
|
1489
1488
|
readonly output: import("zod").ZodObject<{
|
|
1490
1489
|
data: import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -1550,9 +1549,8 @@ export type ExaWebhooks = {
|
|
|
1550
1549
|
declare const exaWebhooksNested: {
|
|
1551
1550
|
readonly search: {
|
|
1552
1551
|
readonly searchAlert: ExaWebhook<"searchAlert", {
|
|
1553
|
-
id: string;
|
|
1554
|
-
created_at: string;
|
|
1555
1552
|
type: "search.alert";
|
|
1553
|
+
id: string;
|
|
1556
1554
|
data: {
|
|
1557
1555
|
query: string;
|
|
1558
1556
|
results: {
|
|
@@ -1567,31 +1565,31 @@ declare const exaWebhooksNested: {
|
|
|
1567
1565
|
score?: number | undefined;
|
|
1568
1566
|
}[];
|
|
1569
1567
|
};
|
|
1568
|
+
created_at: string;
|
|
1570
1569
|
}>;
|
|
1571
1570
|
};
|
|
1572
1571
|
readonly content: {
|
|
1573
1572
|
readonly contentIndexed: ExaWebhook<"contentIndexed", {
|
|
1574
|
-
id: string;
|
|
1575
|
-
created_at: string;
|
|
1576
1573
|
type: "content.indexed";
|
|
1574
|
+
id: string;
|
|
1577
1575
|
data: {
|
|
1578
1576
|
url: string;
|
|
1579
1577
|
title?: string | null | undefined;
|
|
1580
1578
|
publishedDate?: string | null | undefined;
|
|
1581
1579
|
author?: string | null | undefined;
|
|
1582
1580
|
};
|
|
1581
|
+
created_at: string;
|
|
1583
1582
|
}>;
|
|
1584
1583
|
};
|
|
1585
1584
|
readonly webset: {
|
|
1586
1585
|
readonly websetItemsFound: ExaWebhook<"websetItemsFound", {
|
|
1587
|
-
id: string;
|
|
1588
|
-
created_at: string;
|
|
1589
1586
|
type: "webset.items_found";
|
|
1587
|
+
id: string;
|
|
1590
1588
|
data: {
|
|
1591
1589
|
webset: {
|
|
1592
1590
|
object: "webset";
|
|
1593
|
-
id: string;
|
|
1594
1591
|
status: "idle" | "running" | "paused" | "done";
|
|
1592
|
+
id: string;
|
|
1595
1593
|
createdAt: string;
|
|
1596
1594
|
updatedAt: string;
|
|
1597
1595
|
externalId?: string | undefined;
|
|
@@ -1609,22 +1607,23 @@ declare const exaWebhooksNested: {
|
|
|
1609
1607
|
}[];
|
|
1610
1608
|
itemCount?: number | undefined;
|
|
1611
1609
|
};
|
|
1610
|
+
created_at: string;
|
|
1612
1611
|
}>;
|
|
1613
1612
|
readonly websetSearchCompleted: ExaWebhook<"websetSearchCompleted", {
|
|
1614
|
-
id: string;
|
|
1615
|
-
created_at: string;
|
|
1616
1613
|
type: "webset.search.completed";
|
|
1614
|
+
id: string;
|
|
1617
1615
|
data: {
|
|
1618
1616
|
webset: {
|
|
1619
1617
|
object: "webset";
|
|
1620
|
-
id: string;
|
|
1621
1618
|
status: "idle" | "running" | "paused" | "done";
|
|
1619
|
+
id: string;
|
|
1622
1620
|
createdAt: string;
|
|
1623
1621
|
updatedAt: string;
|
|
1624
1622
|
externalId?: string | undefined;
|
|
1625
1623
|
};
|
|
1626
1624
|
totalItems?: number | undefined;
|
|
1627
1625
|
};
|
|
1626
|
+
created_at: string;
|
|
1628
1627
|
}>;
|
|
1629
1628
|
};
|
|
1630
1629
|
};
|
|
@@ -1655,5 +1654,5 @@ export type ExternalExaPlugin<T extends ExaPluginOptions> = BaseExaPlugin<T>;
|
|
|
1655
1654
|
export declare function exa<const T extends ExaPluginOptions>(incomingOptions?: ExaPluginOptions & T): ExternalExaPlugin<T>;
|
|
1656
1655
|
export type { ContentIndexedEvent, ExaWebhookOutputs, SearchAlertEvent, WebsetItemsFoundEvent, WebsetSearchCompletedEvent, } from './webhooks/types';
|
|
1657
1656
|
export { createExaEventMatch } from './webhooks/types';
|
|
1658
|
-
export type { EventsGetInput, EventsListInput, EventsListResponse, ExaEndpointInputs, ExaEndpointOutputs, FindSimilarInput, FindSimilarResponse, GetAnswerInput, GetAnswerResponse, GetContentsInput, GetContentsResponse, ImportsCreateInput, ImportsDeleteInput, ImportsDeleteResponse, ImportsListInput, ImportsListResponse, MonitorsCreateInput, SearchInput, SearchResponse, SearchResult,
|
|
1657
|
+
export type { EventsGetInput, EventsListInput, EventsListResponse, ExaEndpointInputs, ExaEndpointOutputs, FindSimilarInput, FindSimilarResponse, GetAnswerInput, GetAnswerResponse, GetContentsInput, GetContentsResponse, ImportsCreateInput, ImportsDeleteInput, ImportsDeleteResponse, ImportsListInput, ImportsListResponse, MonitorsCreateInput, SearchInput, SearchResponse, SearchResult, WebhookApi, WebhooksApiListInput, WebhooksApiListResponse, Webset, WebsetEvent, WebsetImport, WebsetMonitor, WebsetsCreateInput, WebsetsDeleteInput, WebsetsDeleteResponse, WebsetsGetInput, } from './endpoints/types';
|
|
1659
1658
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,QAAQ,EAER,uBAAuB,EAEvB,MAAM,cAAc,CAAC;AAWtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM/E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,MAAM,kBAAkB,CAAC;AAY1B,MAAM,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACpD,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACpC,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACpC,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;CAChD,CAAC;AAEF,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDrB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;IACzB,WAAW,EAAE,UAAU,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,UAAU,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAClE,gBAAgB,EAAE,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IACxE,qBAAqB,EAAE,UAAU,CAChC,uBAAuB,EACvB,0BAA0B,CAC1B,CAAC;CACF,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWb,CAAC;AAyBX,QAAA,MAAM,eAAe,EAAG,SAAkB,CAAC;AAgE3C,eAAO,MAAM,aAAa;;;;CAIW,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEzE,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAI,eAAe,CACrE,UAAU,EACV,iBAAiB,CAAC,CAAC,CAAC,EACpB,kBAAkB,CAAC,CAAC,CAAC,CACrB,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,MAAM,IAAI,cAAc,CAC1E,UAAU,EACV,MAAM,EACN,iBAAiB,CAAC,CAAC,CAAC,CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAEzD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,WAAW,CAAC,EAAE,uBAAuB,CAAC,OAAO,kBAAkB,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,oBAAoB,CAC5C,OAAO,SAAS,EAChB,gBAAgB,CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAEvE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,gBAAgB,IAAI,aAAa,CACpE,KAAK,EACL,OAAO,SAAS,EAChB,OAAO,kBAAkB,EACzB,OAAO,iBAAiB,EACxB,CAAC,EACD,OAAO,eAAe,CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAEhE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;AAE7E,wBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,gBAAgB,EACnD,eAAe,GAAE,gBAAgB,GAAG,CAA8B,GAChE,iBAAiB,CAAC,CAAC,CAAC,CA4DtB;AAMD,YAAY,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,YAAY,EACX,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,MAAM,EACN,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,GACf,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{logEventFromContext as Re}from"corsair/core";import{request as ke}from"corsair/http";var Ce="https://api.exa.ai",Ae={enabled:!0,maxRetries:3,initialRetryDelay:1e3,backoffMultiplier:2,headerNames:{retryAfter:"Retry-After"}};async function d(t,s,o={}){let{method:n="POST",body:r,query:p}=o;return await ke({BASE:Ce,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",HEADERS:{"Content-Type":"application/json","x-api-key":s}},{method:n,url:t,body:n==="POST"||n==="PUT"||n==="PATCH"?r:void 0,mediaType:"application/json; charset=utf-8",query:n==="GET"?p:void 0},{rateLimitConfig:Ae})}var R=async(t,s)=>{let o=await d("answer",t.key,{method:"POST",body:s});if(o.citations&&t.db.searchResults)try{for(let n of o.citations)await t.db.searchResults.upsertByEntityId(n.id,{...n,query:s.query,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save answer citations to database:",n)}return await Re(t,"exa.answer.get",{query:s.query},"completed"),o};import{logEventFromContext as We}from"corsair/core";var W=async(t,s)=>{let o=await d("contents",t.key,{method:"POST",body:s});if(o.results&&t.db.searchResults)try{for(let n of o.results)await t.db.searchResults.upsertByEntityId(n.id,{...n,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save contents to database:",n)}return await We(t,"exa.contents.get",{idCount:s.ids.length},"completed"),o};import{logEventFromContext as D}from"corsair/core";var L=async(t,s)=>{let{websetId:o,...n}=s,r=await d(`websets/v0/websets/${o}/events`,t.key,{method:"GET",query:n});if(r.data&&t.db.events)try{for(let p of r.data)await t.db.events.upsertByEntityId(p.id,{id:p.id,type:p.type,websetId:o,createdAt:new Date(p.createdAt)})}catch(p){console.warn("Failed to save events to database:",p)}return await D(t,"exa.events.list",{websetId:o},"completed"),r},G=async(t,s)=>{let o=await d(`websets/v0/websets/${s.websetId}/events/${s.eventId}`,t.key,{method:"GET"});if(t.db.events)try{await t.db.events.upsertByEntityId(o.id,{id:o.id,type:o.type,websetId:s.websetId,createdAt:new Date(o.createdAt)})}catch(n){console.warn("Failed to save event to database:",n)}return await D(t,"exa.events.get",{websetId:s.websetId,eventId:s.eventId},"completed"),o};import{logEventFromContext as g}from"corsair/core";var F=async(t,s)=>{let o=await d(`websets/v0/websets/${s.websetId}/imports`,t.key,{method:"POST",body:{urls:s.urls}});if(t.db.imports)try{await t.db.imports.upsertByEntityId(o.id,{...o,createdAt:new Date(o.createdAt),updatedAt:o.updatedAt?new Date(o.updatedAt):void 0})}catch(n){console.warn("Failed to save import to database:",n)}return await g(t,"exa.imports.create",{websetId:s.websetId,urlCount:s.urls.length},"completed"),o},O=async(t,s)=>{let{websetId:o,...n}=s,r=await d(`websets/v0/websets/${o}/imports`,t.key,{method:"GET",query:n});if(r.data&&t.db.imports)try{for(let p of r.data)await t.db.imports.upsertByEntityId(p.id,{...p,createdAt:new Date(p.createdAt),updatedAt:p.updatedAt?new Date(p.updatedAt):void 0})}catch(p){console.warn("Failed to save imports to database:",p)}return await g(t,"exa.imports.list",{websetId:o},"completed"),r},P=async(t,s)=>{let o=await d(`websets/v0/websets/${s.websetId}/imports/${s.importId}`,t.key,{method:"DELETE"});if(o.deleted&&t.db.imports)try{await t.db.imports.deleteByEntityId(s.importId)}catch(n){console.warn("Failed to delete import from database:",n)}return await g(t,"exa.imports.delete",{websetId:s.websetId,importId:s.importId},"completed"),o};import{logEventFromContext as De}from"corsair/core";var T=async(t,s)=>{let{websetId:o,...n}=s,r=await d(`websets/v0/websets/${o}/monitors`,t.key,{method:"POST",body:n});if(t.db.monitors)try{await t.db.monitors.upsertByEntityId(r.id,{...r,createdAt:new Date(r.createdAt),updatedAt:r.updatedAt?new Date(r.updatedAt):void 0})}catch(p){console.warn("Failed to save monitor to database:",p)}return await De(t,"exa.monitors.create",{websetId:o,cadenceType:s.cadence.type},"completed"),r};import{logEventFromContext as j}from"corsair/core";var q=async(t,s)=>{let o=await d("search",t.key,{method:"POST",body:s});if(o.results&&t.db.searchResults)try{for(let n of o.results)await t.db.searchResults.upsertByEntityId(n.id,{...n,query:s.query,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save search results to database:",n)}return await j(t,"exa.search.search",{query:s.query,resultCount:o.results?.length??0},"completed"),o},M=async(t,s)=>{let o=await d("findSimilar",t.key,{method:"POST",body:s});if(o.results&&t.db.searchResults)try{for(let n of o.results)await t.db.searchResults.upsertByEntityId(n.id,{...n,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save search results to database:",n)}return await j(t,"exa.search.findSimilar",{url:s.url,resultCount:o.results?.length??0},"completed"),o};import{logEventFromContext as Le}from"corsair/core";var z=async(t,s)=>{let o=await d("websets/v0/webhooks",t.key,{method:"GET",query:s});if(o.data&&t.db.webhookConfigs)try{for(let n of o.data)await t.db.webhookConfigs.upsertByEntityId(n.id,{...n,createdAt:new Date(n.createdAt),updatedAt:n.updatedAt?new Date(n.updatedAt):void 0})}catch(n){console.warn("Failed to save webhook configs to database:",n)}return await Le(t,"exa.webhooksApi.list",{},"completed"),o};import{logEventFromContext as I}from"corsair/core";var B=async(t,s)=>{let o=await d("websets/v0/websets",t.key,{method:"POST",body:s});if(t.db.websets)try{await t.db.websets.upsertByEntityId(o.id,{id:o.id,status:o.status,externalId:o.externalId,createdAt:new Date(o.createdAt)})}catch(n){console.warn("Failed to save webset to database:",n)}return await I(t,"exa.websets.create",{externalId:s.externalId},"completed"),o},_=async(t,s)=>{let o=await d(`websets/v0/websets/${s.id}`,t.key,{method:"GET"});if(t.db.websets)try{await t.db.websets.upsertByEntityId(o.id,{id:o.id,status:o.status,externalId:o.externalId,createdAt:new Date(o.createdAt),updatedAt:new Date(o.updatedAt)})}catch(n){console.warn("Failed to save webset to database:",n)}return await I(t,"exa.websets.get",{id:s.id},"completed"),o},H=async(t,s)=>{let o=await d(`websets/v0/websets/${s.id}`,t.key,{method:"DELETE"});if(o.deleted&&t.db.websets)try{await t.db.websets.deleteByEntityId(s.id)}catch(n){console.warn("Failed to delete webset from database:",n)}return await I(t,"exa.websets.delete",{id:s.id},"completed"),o};import{z as e}from"zod";var N=e.object({maxCharacters:e.number().optional(),includeHtmlTags:e.boolean().optional()}),U=e.object({numSentences:e.number().optional(),highlightsPerUrl:e.number().optional(),query:e.string().optional()}),K=e.object({query:e.string().optional()}),X=e.object({text:e.union([N,e.boolean()]).optional(),highlights:e.union([U,e.boolean()]).optional(),summary:e.union([K,e.boolean()]).optional()}),y=e.object({id:e.string(),url:e.string(),title:e.string().nullable().optional(),publishedDate:e.string().nullable().optional(),author:e.string().nullable().optional(),score:e.number().optional(),text:e.string().optional(),highlights:e.array(e.string()).optional(),highlightScores:e.array(e.number()).optional(),summary:e.string().optional()}),Ge=e.object({type:e.enum(["company","person","article","research paper","repository","event","product","video","job","podcast"]).optional()}),Fe=e.object({description:e.string(),successRate:e.string().optional()}),V=e.object({query:e.string(),count:e.number().optional(),entity:Ge.optional(),criteria:e.array(Fe).optional()}),Oe=e.object({description:e.string(),format:e.enum(["text","date","number","options","boolean"]).optional(),options:e.array(e.string()).optional()}),Pe=e.object({id:e.string(),description:e.string(),format:e.enum(["text","date","number","options","boolean"]),options:e.array(e.string()).optional(),createdAt:e.string(),updatedAt:e.string()}),S=e.object({id:e.string(),object:e.literal("import"),websetId:e.string(),urls:e.array(e.string()).optional(),status:e.enum(["pending","processing","completed","failed"]).optional(),createdAt:e.string(),updatedAt:e.string().optional()}),J=e.object({type:e.enum(["realtime","hourly","daily","weekly"])}),Q=e.object({id:e.string(),object:e.literal("monitor"),websetId:e.string(),cadence:J,createdAt:e.string(),updatedAt:e.string().optional()}),$=e.object({id:e.string(),object:e.literal("webset"),status:e.enum(["idle","running","paused","done"]),externalId:e.string().optional(),searches:e.array(V).optional(),enrichments:e.array(Pe).optional(),imports:e.array(S).optional(),monitors:e.array(Q).optional(),createdAt:e.string(),updatedAt:e.string()}),Z=e.object({id:e.string(),object:e.literal("event"),type:e.string(),createdAt:e.string(),data:e.unknown().optional()}),Te=e.object({id:e.string(),object:e.literal("webhook"),url:e.string(),events:e.array(e.string()).optional(),status:e.enum(["active","inactive"]).optional(),createdAt:e.string(),updatedAt:e.string().optional()}),v=t=>e.object({data:e.array(t),hasMore:e.boolean().optional(),nextCursor:e.string().optional()}),je=e.object({query:e.string(),numResults:e.number().optional(),includeDomains:e.array(e.string()).optional(),excludeDomains:e.array(e.string()).optional(),startCrawlDate:e.string().optional(),endCrawlDate:e.string().optional(),startPublishedDate:e.string().optional(),endPublishedDate:e.string().optional(),useAutoprompt:e.boolean().optional(),type:e.enum(["keyword","neural","auto"]).optional(),category:e.string().optional(),contents:X.optional()}),qe=e.object({url:e.string(),numResults:e.number().optional(),includeDomains:e.array(e.string()).optional(),excludeDomains:e.array(e.string()).optional(),startCrawlDate:e.string().optional(),endCrawlDate:e.string().optional(),startPublishedDate:e.string().optional(),endPublishedDate:e.string().optional(),excludeSourceDomain:e.boolean().optional(),category:e.string().optional(),contents:X.optional()}),Me=e.object({ids:e.array(e.string()),text:e.union([N,e.boolean()]).optional(),highlights:e.union([U,e.boolean()]).optional(),summary:e.union([K,e.boolean()]).optional()}),ze=e.object({query:e.string(),text:e.boolean().optional(),stream:e.boolean().optional()}),Be=e.object({searches:e.array(V).optional(),enrichments:e.array(Oe).optional(),externalId:e.string().optional()}),_e=e.object({id:e.string()}),He=e.object({id:e.string()}),$e=e.object({websetId:e.string(),urls:e.array(e.string())}),Ne=e.object({websetId:e.string(),cursor:e.string().optional(),limit:e.number().optional()}),Ue=e.object({websetId:e.string(),importId:e.string()}),Ke=e.object({websetId:e.string(),cadence:J}),Xe=e.object({websetId:e.string(),cursor:e.string().optional(),limit:e.number().optional()}),Ve=e.object({websetId:e.string(),eventId:e.string()}),Je=e.object({cursor:e.string().optional(),limit:e.number().optional()}),Qe=e.object({results:e.array(y),autopromptString:e.string().optional(),requestId:e.string().optional()}),Ze=e.object({results:e.array(y),requestId:e.string().optional()}),Ye=e.object({results:e.array(y),requestId:e.string().optional()}),et=e.object({answer:e.string(),citations:e.array(y).optional(),requestId:e.string().optional()}),tt=e.object({id:e.string(),object:e.literal("webset"),deleted:e.boolean()}),ot=e.object({id:e.string(),deleted:e.boolean()}),st=v(S),nt=v(Z),rt=v(Te),l={searchSearch:je,searchFindSimilar:qe,contentsGet:Me,answerGet:ze,websetsCreate:Be,websetsGet:_e,websetsDelete:He,importsCreate:$e,importsList:Ne,importsDelete:Ue,monitorsCreate:Ke,eventsList:Xe,eventsGet:Ve,webhooksApiList:Je},u={searchSearch:Qe,searchFindSimilar:Ze,contentsGet:Ye,answerGet:et,websetsCreate:$,websetsGet:$,websetsDelete:tt,importsCreate:S,importsList:st,importsDelete:ot,monitorsCreate:Q,eventsList:nt,eventsGet:Z,webhooksApiList:rt};var k={search:q,findSimilar:M},Y={get:W},ee={get:R},E={create:B,get:_,delete:H},w={create:F,list:O,delete:P},te={create:T},C={list:L,get:G},oe={list:z};import{ApiError as h}from"corsair/http";var se={RATE_LIMIT_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===429)return!0;let o=t.message.toLowerCase();return o.includes("rate_limit")||o.includes("ratelimit")||t.message.includes("429")},handler:async(t,s)=>{let o;return t instanceof h&&t.retryAfter!==void 0&&(o=t.retryAfter),{maxRetries:5,headersRetryAfterMs:o}}},AUTH_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===401)return!0;let o=t.message.toLowerCase();return o.includes("unauthorized")||o.includes("invalid api key")||o.includes("authentication")},handler:async(t,s)=>(console.log(`[EXA:${s.operation}] Authentication failed - check your API key`),{maxRetries:0})},PERMISSION_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===403)return!0;let o=t.message.toLowerCase();return o.includes("forbidden")||o.includes("permission")||o.includes("access denied")},handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Permission denied: ${t.message}`),{maxRetries:0})},BAD_REQUEST_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===400)return!0;let o=t.message.toLowerCase();return o.includes("bad request")||o.includes("invalid request")||o.includes("validation")},handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Bad request: ${t.message}`),{maxRetries:0})},NETWORK_ERROR:{match:(t,s)=>{let o=t.message.toLowerCase();return o.includes("network")||o.includes("connection")||o.includes("econnrefused")||o.includes("enotfound")||o.includes("etimedout")||o.includes("fetch failed")||o.includes("network error")},handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Network error: ${t.message}`),{maxRetries:3})},NOT_FOUND_ERROR:{match:(t,s)=>t instanceof h&&t.status===404?!0:t.message.toLowerCase().includes("not found"),handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Resource not found: ${t.message}`),{maxRetries:0})},DEFAULT:{match:(t,s)=>!0,handler:async(t,s)=>(console.error(`[EXA:${s.operation}] Unhandled error: ${t.message}`),{maxRetries:0})}};import i from"zod";var ne=i.object({id:i.string(),url:i.string(),title:i.string().nullable().optional(),publishedDate:i.string().nullable().optional(),author:i.string().nullable().optional(),score:i.number().optional(),text:i.string().optional(),highlights:i.array(i.string()).optional(),highlightScores:i.array(i.number()).optional(),summary:i.string().optional(),query:i.string().optional(),createdAt:i.coerce.date().nullable().optional()}),re=i.object({id:i.string(),status:i.enum(["idle","running","paused","done"]).optional(),externalId:i.string().optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()}),ae=i.object({id:i.string(),websetId:i.string(),urls:i.array(i.string()).optional(),status:i.enum(["pending","processing","completed","failed"]).optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()}),ie=i.object({id:i.string(),websetId:i.string(),cadenceType:i.enum(["realtime","hourly","daily","weekly"]).optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()}),pe=i.object({id:i.string(),type:i.string(),websetId:i.string().optional(),createdAt:i.coerce.date().nullable().optional()}),de=i.object({id:i.string(),url:i.string(),events:i.array(i.string()).optional(),status:i.enum(["active","inactive"]).optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()});var ce={version:"1.2.0",entities:{searchResults:ne,websets:re,imports:ae,monitors:ie,events:pe,webhookConfigs:de}};import{logEventFromContext as dt}from"corsair/core";import{createHmac as at,timingSafeEqual as it}from"crypto";import{z as a}from"zod";var x=a.object({id:a.string(),url:a.string(),title:a.string().nullable().optional(),publishedDate:a.string().nullable().optional(),author:a.string().nullable().optional(),score:a.number().optional(),text:a.string().optional(),highlights:a.array(a.string()).optional(),summary:a.string().optional()}),f=a.object({id:a.string(),object:a.literal("webset"),status:a.enum(["idle","running","paused","done"]),externalId:a.string().optional(),createdAt:a.string(),updatedAt:a.string()}),le=a.object({type:a.literal("search.alert"),id:a.string(),created_at:a.string(),data:a.object({query:a.string(),results:a.array(x)})}),ue=a.object({type:a.literal("content.indexed"),id:a.string(),created_at:a.string(),data:a.object({url:a.string(),title:a.string().nullable().optional(),publishedDate:a.string().nullable().optional(),author:a.string().nullable().optional()})}),me=a.object({type:a.literal("webset.items_found"),id:a.string(),created_at:a.string(),data:a.object({webset:f,items:a.array(x),itemCount:a.number().optional()})}),be=a.object({type:a.literal("webset.search.completed"),id:a.string(),created_at:a.string(),data:a.object({webset:f,totalItems:a.number().optional()})}),he=a.object({query:a.string(),results:a.array(x),triggeredAt:a.string()}),ye=a.object({url:a.string(),title:a.string().nullable().optional(),publishedDate:a.string().nullable().optional(),author:a.string().nullable().optional(),indexedAt:a.string()}),Ee=a.object({webset:f,items:a.array(x),itemCount:a.number().optional(),triggeredAt:a.string()}),we=a.object({webset:f,totalItems:a.number().optional(),completedAt:a.string()});function pt(t){return typeof t=="string"?JSON.parse(t):t}function m(t){return s=>pt(s.body).type===t}function b(t,s){if(!s)return{valid:!1,error:"Missing webhook secret"};let o=t.rawBody;if(!o)return{valid:!1,error:"Missing raw body for signature verification"};let n=t.headers,r=Array.isArray(n["x-exa-signature"])?n["x-exa-signature"][0]:n["x-exa-signature"];if(!r)return{valid:!1,error:"Missing x-exa-signature header"};let p=at("sha256",s).update(o).digest("hex");try{let c=it(Buffer.from(r),Buffer.from(p));return{valid:c,error:c?void 0:"Invalid signature"}}catch{return{valid:!1,error:"Signature comparison failed"}}}var xe={match:m("content.indexed"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let r=s.payload;if(r.type!=="content.indexed")return{success:!0,data:void 0};let p="";if(t.db.searchResults)try{p=(await t.db.searchResults.upsertByEntityId(r.id,{id:r.id,...r.data,createdAt:r.data.publishedDate?new Date(r.data.publishedDate):new Date}))?.id||""}catch(c){console.warn("Failed to save indexed content to database:",c)}return await dt(t,"exa.webhook.contentIndexed",{url:r.data.url,title:r.data.title},"completed"),{success:!0,corsairEntityId:p,data:r}}};import{logEventFromContext as ct}from"corsair/core";var fe={match:m("search.alert"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let r=s.payload;if(r.type!=="search.alert")return{success:!0,data:void 0};if(t.db.searchResults)try{for(let p of r.data.results)await t.db.searchResults.upsertByEntityId(p.id,{...p,query:r.data.query,createdAt:p.publishedDate?new Date(p.publishedDate):new Date})}catch(p){console.warn("Failed to save search results to database:",p)}return await ct(t,"exa.webhook.searchAlert",{query:r.data.query,resultCount:r.data.results.length},"completed"),{success:!0,data:r}}};import{logEventFromContext as lt}from"corsair/core";var ge={match:m("webset.items_found"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let r=s.payload;if(r.type!=="webset.items_found")return{success:!0,data:void 0};let p="";if(t.db.websets)try{p=(await t.db.websets.upsertByEntityId(r.data.webset.id,{id:r.data.webset.id,status:r.data.webset.status,externalId:r.data.webset.externalId,createdAt:new Date(r.data.webset.createdAt),updatedAt:new Date(r.data.webset.updatedAt)}))?.id||""}catch(c){console.warn("Failed to save webset to database:",c)}if(t.db.searchResults)try{for(let c of r.data.items)await t.db.searchResults.upsertByEntityId(c.id,{...c,createdAt:c.publishedDate?new Date(c.publishedDate):new Date})}catch(c){console.warn("Failed to save webset items to database:",c)}return await lt(t,"exa.webhook.websetItemsFound",{websetId:r.data.webset.id,itemCount:r.data.items.length},"completed"),{success:!0,corsairEntityId:p,data:r}}};import{logEventFromContext as ut}from"corsair/core";var Ie={match:m("webset.search.completed"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let r=s.payload;if(r.type!=="webset.search.completed")return{success:!0,data:void 0};let p="";if(t.db.websets)try{p=(await t.db.websets.upsertByEntityId(r.data.webset.id,{id:r.data.webset.id,status:r.data.webset.status,externalId:r.data.webset.externalId,createdAt:new Date(r.data.webset.createdAt),updatedAt:new Date(r.data.webset.updatedAt)}))?.id||""}catch(c){console.warn("Failed to save webset to database:",c)}return await ut(t,"exa.webhook.websetSearchCompleted",{websetId:r.data.webset.id,totalItems:r.data.totalItems},"completed"),{success:!0,corsairEntityId:p,data:r}}};var Se={searchAlert:fe},ve={contentIndexed:xe},A={websetItemsFound:ge,websetSearchCompleted:Ie};var mt={search:{search:k.search,findSimilar:k.findSimilar},contents:{get:Y.get},answer:{get:ee.get},websets:{create:E.create,get:E.get,delete:E.delete},imports:{create:w.create,list:w.list,delete:w.delete},monitors:{create:te.create},events:{list:C.list,get:C.get},webhooksApi:{list:oe.list}},bt={"search.search":{input:l.searchSearch,output:u.searchSearch},"search.findSimilar":{input:l.searchFindSimilar,output:u.searchFindSimilar},"contents.get":{input:l.contentsGet,output:u.contentsGet},"answer.get":{input:l.answerGet,output:u.answerGet},"websets.create":{input:l.websetsCreate,output:u.websetsCreate},"websets.get":{input:l.websetsGet,output:u.websetsGet},"websets.delete":{input:l.websetsDelete,output:u.websetsDelete},"imports.create":{input:l.importsCreate,output:u.importsCreate},"imports.list":{input:l.importsList,output:u.importsList},"imports.delete":{input:l.importsDelete,output:u.importsDelete},"monitors.create":{input:l.monitorsCreate,output:u.monitorsCreate},"events.list":{input:l.eventsList,output:u.eventsList},"events.get":{input:l.eventsGet,output:u.eventsGet},"webhooksApi.list":{input:l.webhooksApiList,output:u.webhooksApiList}},ht={search:{searchAlert:Se.searchAlert},content:{contentIndexed:ve.contentIndexed},webset:{websetItemsFound:A.websetItemsFound,websetSearchCompleted:A.websetSearchCompleted}},yt={"search.searchAlert":{description:"A monitored search query has new matching results",payload:le,response:he},"content.contentIndexed":{description:"A new web page has been indexed by Exa",payload:ue,response:ye},"webset.websetItemsFound":{description:"New items were found for a webset search",payload:me,response:Ee},"webset.websetSearchCompleted":{description:"A webset search has completed",payload:be,response:we}},Et="api_key",wt={"search.search":{riskLevel:"read",description:"Search the web using neural or keyword search"},"search.findSimilar":{riskLevel:"read",description:"Find web pages semantically similar to a given URL"},"contents.get":{riskLevel:"read",description:"Retrieve full text, highlights, or summaries from URLs or document IDs"},"answer.get":{riskLevel:"read",description:"Generate a direct, citation-backed answer to a natural language question"},"websets.create":{riskLevel:"write",description:"Create a new webset with search, import, and enrichment setup"},"websets.get":{riskLevel:"read",description:"Get details of a specific webset by its ID"},"websets.delete":{riskLevel:"destructive",description:"Delete a webset [DESTRUCTIVE]"},"imports.create":{riskLevel:"write",description:"Create a new import to upload data into a webset"},"imports.list":{riskLevel:"read",description:"List all imports for a webset"},"imports.delete":{riskLevel:"destructive",description:"Delete an existing import [DESTRUCTIVE]"},"monitors.create":{riskLevel:"write",description:"Create a new monitor to watch a webset for changes"},"events.list":{riskLevel:"read",description:"List all events that have occurred for a webset"},"events.get":{riskLevel:"read",description:"Get details of a specific webset event by its ID"},"webhooksApi.list":{riskLevel:"read",description:"List all webhooks configured for websets"}},Mo={api_key:{account:["one"]}};function zo(t={}){let s={...t,authType:t.authType??Et};return{id:"exa",schema:ce,options:s,hooks:s.hooks,webhookHooks:s.webhookHooks,endpoints:mt,webhooks:ht,endpointMeta:wt,endpointSchemas:bt,webhookSchemas:yt,pluginWebhookMatcher:o=>"x-exa-signature"in o.headers,errorHandlers:{...se,...s.errorHandlers},keyBuilder:async(o,n)=>{if(n==="webhook"&&s.webhookSecret)return s.webhookSecret;if(n==="webhook"){let r=await o.keys.get_webhook_signature();return r||""}if(n==="endpoint"&&s.key)return s.key;if(o.authType==="api_key"){let r=await o.keys.get_api_key();return r||""}return""}}}export{m as createExaEventMatch,zo as exa,Mo as exaAuthConfig,bt as exaEndpointSchemas};
|
|
1
|
+
import{logEventFromContext as Re}from"corsair/core";import{request as ke}from"corsair/http";var Ce="https://api.exa.ai",Ae={enabled:!0,maxRetries:3,initialRetryDelay:1e3,backoffMultiplier:2,headerNames:{retryAfter:"Retry-After"}};async function d(t,s,o={}){let{method:n="POST",body:a,query:p}=o;return await ke({BASE:Ce,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",HEADERS:{"Content-Type":"application/json","x-api-key":s}},{method:n,url:t,body:n==="POST"||n==="PUT"||n==="PATCH"?a:void 0,mediaType:"application/json; charset=utf-8",query:n==="GET"?p:void 0},{rateLimitConfig:Ae})}var R=async(t,s)=>{let o=await d("answer",t.key,{method:"POST",body:s});if(o.citations&&t.db.searchResults)try{for(let n of o.citations)await t.db.searchResults.upsertByEntityId(n.id,{...n,query:s.query,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save answer citations to database:",n)}return await Re(t,"exa.answer.get",{query:s.query},"completed"),o};import{logEventFromContext as We}from"corsair/core";var W=async(t,s)=>{let o=await d("contents",t.key,{method:"POST",body:s});if(o.results&&t.db.searchResults)try{for(let n of o.results)await t.db.searchResults.upsertByEntityId(n.id,{...n,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save contents to database:",n)}return await We(t,"exa.contents.get",{idCount:s.ids.length},"completed"),o};import{logEventFromContext as D}from"corsair/core";var L=async(t,s)=>{let{websetId:o,...n}=s,a=await d(`websets/v0/websets/${o}/events`,t.key,{method:"GET",query:n});if(a.data&&t.db.events)try{for(let p of a.data)await t.db.events.upsertByEntityId(p.id,{id:p.id,type:p.type,websetId:o,createdAt:new Date(p.createdAt)})}catch(p){console.warn("Failed to save events to database:",p)}return await D(t,"exa.events.list",{websetId:o},"completed"),a},G=async(t,s)=>{let o=await d(`websets/v0/websets/${s.websetId}/events/${s.eventId}`,t.key,{method:"GET"});if(t.db.events)try{await t.db.events.upsertByEntityId(o.id,{id:o.id,type:o.type,websetId:s.websetId,createdAt:new Date(o.createdAt)})}catch(n){console.warn("Failed to save event to database:",n)}return await D(t,"exa.events.get",{websetId:s.websetId,eventId:s.eventId},"completed"),o};import{logEventFromContext as g}from"corsair/core";var F=async(t,s)=>{let o=await d(`websets/v0/websets/${s.websetId}/imports`,t.key,{method:"POST",body:{urls:s.urls}});if(t.db.imports)try{await t.db.imports.upsertByEntityId(o.id,{...o,createdAt:new Date(o.createdAt),updatedAt:o.updatedAt?new Date(o.updatedAt):void 0})}catch(n){console.warn("Failed to save import to database:",n)}return await g(t,"exa.imports.create",{websetId:s.websetId,urlCount:s.urls.length},"completed"),o},O=async(t,s)=>{let{websetId:o,...n}=s,a=await d(`websets/v0/websets/${o}/imports`,t.key,{method:"GET",query:n});if(a.data&&t.db.imports)try{for(let p of a.data)await t.db.imports.upsertByEntityId(p.id,{...p,createdAt:new Date(p.createdAt),updatedAt:p.updatedAt?new Date(p.updatedAt):void 0})}catch(p){console.warn("Failed to save imports to database:",p)}return await g(t,"exa.imports.list",{websetId:o},"completed"),a},P=async(t,s)=>{let o=await d(`websets/v0/websets/${s.websetId}/imports/${s.importId}`,t.key,{method:"DELETE"});if(o.deleted&&t.db.imports)try{await t.db.imports.deleteByEntityId(s.importId)}catch(n){console.warn("Failed to delete import from database:",n)}return await g(t,"exa.imports.delete",{websetId:s.websetId,importId:s.importId},"completed"),o};import{logEventFromContext as De}from"corsair/core";var T=async(t,s)=>{let{websetId:o,...n}=s,a=await d(`websets/v0/websets/${o}/monitors`,t.key,{method:"POST",body:n});if(t.db.monitors)try{await t.db.monitors.upsertByEntityId(a.id,{...a,createdAt:new Date(a.createdAt),updatedAt:a.updatedAt?new Date(a.updatedAt):void 0})}catch(p){console.warn("Failed to save monitor to database:",p)}return await De(t,"exa.monitors.create",{websetId:o,cadenceType:s.cadence.type},"completed"),a};import{logEventFromContext as j}from"corsair/core";var q=async(t,s)=>{let o=await d("search",t.key,{method:"POST",body:s});if(o.results&&t.db.searchResults)try{for(let n of o.results)await t.db.searchResults.upsertByEntityId(n.id,{...n,query:s.query,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save search results to database:",n)}return await j(t,"exa.search.search",{query:s.query,resultCount:o.results?.length??0},"completed"),o},M=async(t,s)=>{let o=await d("findSimilar",t.key,{method:"POST",body:s});if(o.results&&t.db.searchResults)try{for(let n of o.results)await t.db.searchResults.upsertByEntityId(n.id,{...n,createdAt:n.publishedDate?new Date(n.publishedDate):new Date})}catch(n){console.warn("Failed to save search results to database:",n)}return await j(t,"exa.search.findSimilar",{url:s.url,resultCount:o.results?.length??0},"completed"),o};import{logEventFromContext as Le}from"corsair/core";var z=async(t,s)=>{let o=await d("websets/v0/webhooks",t.key,{method:"GET",query:s});if(o.data&&t.db.webhookConfigs)try{for(let n of o.data)await t.db.webhookConfigs.upsertByEntityId(n.id,{...n,createdAt:new Date(n.createdAt),updatedAt:n.updatedAt?new Date(n.updatedAt):void 0})}catch(n){console.warn("Failed to save webhook configs to database:",n)}return await Le(t,"exa.webhooksApi.list",{},"completed"),o};import{logEventFromContext as I}from"corsair/core";var B=async(t,s)=>{let o=await d("websets/v0/websets",t.key,{method:"POST",body:s});if(t.db.websets)try{await t.db.websets.upsertByEntityId(o.id,{id:o.id,status:o.status,externalId:o.externalId,createdAt:new Date(o.createdAt)})}catch(n){console.warn("Failed to save webset to database:",n)}return await I(t,"exa.websets.create",{externalId:s.externalId},"completed"),o},_=async(t,s)=>{let o=await d(`websets/v0/websets/${s.id}`,t.key,{method:"GET"});if(t.db.websets)try{await t.db.websets.upsertByEntityId(o.id,{id:o.id,status:o.status,externalId:o.externalId,createdAt:new Date(o.createdAt),updatedAt:new Date(o.updatedAt)})}catch(n){console.warn("Failed to save webset to database:",n)}return await I(t,"exa.websets.get",{id:s.id},"completed"),o},$=async(t,s)=>{let o=await d(`websets/v0/websets/${s.id}`,t.key,{method:"DELETE"});if(o.deleted&&t.db.websets)try{await t.db.websets.deleteByEntityId(s.id)}catch(n){console.warn("Failed to delete webset from database:",n)}return await I(t,"exa.websets.delete",{id:s.id},"completed"),o};import{z as e}from"zod";var N=e.object({maxCharacters:e.number().optional(),includeHtmlTags:e.boolean().optional()}),U=e.object({numSentences:e.number().optional(),highlightsPerUrl:e.number().optional(),query:e.string().optional()}),K=e.object({query:e.string().optional()}),X=e.object({text:e.union([N,e.boolean()]).optional(),highlights:e.union([U,e.boolean()]).optional(),summary:e.union([K,e.boolean()]).optional()}),y=e.object({id:e.string(),url:e.string(),title:e.string().nullable().optional(),publishedDate:e.string().nullable().optional(),author:e.string().nullable().optional(),score:e.number().optional(),text:e.string().optional(),highlights:e.array(e.string()).optional(),highlightScores:e.array(e.number()).optional(),summary:e.string().optional()}),Ge=e.object({type:e.enum(["company","person","article","research paper","repository","event","product","video","job","podcast"]).optional()}),Fe=e.object({description:e.string(),successRate:e.string().optional()}),V=e.object({query:e.string(),count:e.number().optional(),entity:Ge.optional(),criteria:e.array(Fe).optional()}),Oe=e.object({description:e.string(),format:e.enum(["text","date","number","options","boolean"]).optional(),options:e.array(e.string()).optional()}),Pe=e.object({id:e.string(),description:e.string(),format:e.enum(["text","date","number","options","boolean"]),options:e.array(e.string()).optional(),createdAt:e.string(),updatedAt:e.string()}),S=e.object({id:e.string(),object:e.literal("import"),websetId:e.string(),urls:e.array(e.string()).optional(),status:e.enum(["pending","processing","completed","failed"]).optional(),createdAt:e.string(),updatedAt:e.string().optional()}),J=e.object({type:e.enum(["realtime","hourly","daily","weekly"])}),Q=e.object({id:e.string(),object:e.literal("monitor"),websetId:e.string(),cadence:J,createdAt:e.string(),updatedAt:e.string().optional()}),H=e.object({id:e.string(),object:e.literal("webset"),status:e.enum(["idle","running","paused","done"]),externalId:e.string().optional(),searches:e.array(V).optional(),enrichments:e.array(Pe).optional(),imports:e.array(S).optional(),monitors:e.array(Q).optional(),createdAt:e.string(),updatedAt:e.string()}),Z=e.object({id:e.string(),object:e.literal("event"),type:e.string(),createdAt:e.string(),data:e.unknown().optional()}),Te=e.object({id:e.string(),object:e.literal("webhook"),url:e.string(),events:e.array(e.string()).optional(),status:e.enum(["active","inactive"]).optional(),createdAt:e.string(),updatedAt:e.string().optional()}),v=t=>e.object({data:e.array(t),hasMore:e.boolean().optional(),nextCursor:e.string().optional()}),je=e.object({query:e.string(),numResults:e.number().optional(),includeDomains:e.array(e.string()).optional(),excludeDomains:e.array(e.string()).optional(),startCrawlDate:e.string().optional(),endCrawlDate:e.string().optional(),startPublishedDate:e.string().optional(),endPublishedDate:e.string().optional(),useAutoprompt:e.boolean().optional(),type:e.enum(["keyword","neural","auto"]).optional(),category:e.string().optional(),contents:X.optional()}),qe=e.object({url:e.string(),numResults:e.number().optional(),includeDomains:e.array(e.string()).optional(),excludeDomains:e.array(e.string()).optional(),startCrawlDate:e.string().optional(),endCrawlDate:e.string().optional(),startPublishedDate:e.string().optional(),endPublishedDate:e.string().optional(),excludeSourceDomain:e.boolean().optional(),category:e.string().optional(),contents:X.optional()}),Me=e.object({ids:e.array(e.string()),text:e.union([N,e.boolean()]).optional(),highlights:e.union([U,e.boolean()]).optional(),summary:e.union([K,e.boolean()]).optional()}),ze=e.object({query:e.string(),text:e.boolean().optional(),stream:e.boolean().optional()}),Be=e.object({searches:e.array(V).optional(),enrichments:e.array(Oe).optional(),externalId:e.string().optional()}),_e=e.object({id:e.string()}),$e=e.object({id:e.string()}),He=e.object({websetId:e.string(),urls:e.array(e.string())}),Ne=e.object({websetId:e.string(),cursor:e.string().optional(),limit:e.number().optional()}),Ue=e.object({websetId:e.string(),importId:e.string()}),Ke=e.object({websetId:e.string(),cadence:J}),Xe=e.object({websetId:e.string(),cursor:e.string().optional(),limit:e.number().optional()}),Ve=e.object({websetId:e.string(),eventId:e.string()}),Je=e.object({cursor:e.string().optional(),limit:e.number().optional()}),Qe=e.object({results:e.array(y),autopromptString:e.string().optional(),requestId:e.string().optional()}),Ze=e.object({results:e.array(y),requestId:e.string().optional()}),Ye=e.object({results:e.array(y),requestId:e.string().optional()}),et=e.object({answer:e.string(),citations:e.array(y).optional(),requestId:e.string().optional()}),tt=e.object({id:e.string(),object:e.literal("webset"),deleted:e.boolean()}),ot=e.object({id:e.string(),deleted:e.boolean()}),st=v(S),nt=v(Z),rt=v(Te),l={searchSearch:je,searchFindSimilar:qe,contentsGet:Me,answerGet:ze,websetsCreate:Be,websetsGet:_e,websetsDelete:$e,importsCreate:He,importsList:Ne,importsDelete:Ue,monitorsCreate:Ke,eventsList:Xe,eventsGet:Ve,webhooksApiList:Je},u={searchSearch:Qe,searchFindSimilar:Ze,contentsGet:Ye,answerGet:et,websetsCreate:H,websetsGet:H,websetsDelete:tt,importsCreate:S,importsList:st,importsDelete:ot,monitorsCreate:Q,eventsList:nt,eventsGet:Z,webhooksApiList:rt};var k={search:q,findSimilar:M},Y={get:W},ee={get:R},E={create:B,get:_,delete:$},w={create:F,list:O,delete:P},te={create:T},C={list:L,get:G},oe={list:z};import{ApiError as h}from"corsair/http";var se={RATE_LIMIT_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===429)return!0;let o=t.message.toLowerCase();return o.includes("rate_limit")||o.includes("ratelimit")||t.message.includes("429")},handler:async(t,s)=>{let o;return t instanceof h&&t.retryAfter!==void 0&&(o=t.retryAfter),{maxRetries:5,headersRetryAfterMs:o}}},AUTH_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===401)return!0;let o=t.message.toLowerCase();return o.includes("unauthorized")||o.includes("invalid api key")||o.includes("authentication")},handler:async(t,s)=>(console.log(`[EXA:${s.operation}] Authentication failed - check your API key`),{maxRetries:0})},PERMISSION_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===403)return!0;let o=t.message.toLowerCase();return o.includes("forbidden")||o.includes("permission")||o.includes("access denied")},handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Permission denied: ${t.message}`),{maxRetries:0})},BAD_REQUEST_ERROR:{match:(t,s)=>{if(t instanceof h&&t.status===400)return!0;let o=t.message.toLowerCase();return o.includes("bad request")||o.includes("invalid request")||o.includes("validation")},handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Bad request: ${t.message}`),{maxRetries:0})},NETWORK_ERROR:{match:(t,s)=>{let o=t.message.toLowerCase();return o.includes("network")||o.includes("connection")||o.includes("econnrefused")||o.includes("enotfound")||o.includes("etimedout")||o.includes("fetch failed")||o.includes("network error")},handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Network error: ${t.message}`),{maxRetries:3})},NOT_FOUND_ERROR:{match:(t,s)=>t instanceof h&&t.status===404?!0:t.message.toLowerCase().includes("not found"),handler:async(t,s)=>(console.warn(`[EXA:${s.operation}] Resource not found: ${t.message}`),{maxRetries:0})},DEFAULT:{match:(t,s)=>!0,handler:async(t,s)=>(console.error(`[EXA:${s.operation}] Unhandled error: ${t.message}`),{maxRetries:0})}};import i from"zod";var ne=i.object({id:i.string(),url:i.string(),title:i.string().nullable().optional(),publishedDate:i.string().nullable().optional(),author:i.string().nullable().optional(),score:i.number().optional(),text:i.string().optional(),highlights:i.array(i.string()).optional(),highlightScores:i.array(i.number()).optional(),summary:i.string().optional(),query:i.string().optional(),createdAt:i.coerce.date().nullable().optional()}),re=i.object({id:i.string(),status:i.enum(["idle","running","paused","done"]).optional(),externalId:i.string().optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()}),ae=i.object({id:i.string(),websetId:i.string(),urls:i.array(i.string()).optional(),status:i.enum(["pending","processing","completed","failed"]).optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()}),ie=i.object({id:i.string(),websetId:i.string(),cadenceType:i.enum(["realtime","hourly","daily","weekly"]).optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()}),pe=i.object({id:i.string(),type:i.string(),websetId:i.string().optional(),createdAt:i.coerce.date().nullable().optional()}),de=i.object({id:i.string(),url:i.string(),events:i.array(i.string()).optional(),status:i.enum(["active","inactive"]).optional(),createdAt:i.coerce.date().nullable().optional(),updatedAt:i.coerce.date().nullable().optional()});var ce={version:"1.2.0",entities:{searchResults:ne,websets:re,imports:ae,monitors:ie,events:pe,webhookConfigs:de}};import{logEventFromContext as dt}from"corsair/core";import{createHmac as at,timingSafeEqual as it}from"crypto";import{z as r}from"zod";var x=r.object({id:r.string(),url:r.string(),title:r.string().nullable().optional(),publishedDate:r.string().nullable().optional(),author:r.string().nullable().optional(),score:r.number().optional(),text:r.string().optional(),highlights:r.array(r.string()).optional(),summary:r.string().optional()}),f=r.object({id:r.string(),object:r.literal("webset"),status:r.enum(["idle","running","paused","done"]),externalId:r.string().optional(),createdAt:r.string(),updatedAt:r.string()}),le=r.object({type:r.literal("search.alert"),id:r.string(),created_at:r.string(),data:r.object({query:r.string(),results:r.array(x)})}),ue=r.object({type:r.literal("content.indexed"),id:r.string(),created_at:r.string(),data:r.object({url:r.string(),title:r.string().nullable().optional(),publishedDate:r.string().nullable().optional(),author:r.string().nullable().optional()})}),me=r.object({type:r.literal("webset.items_found"),id:r.string(),created_at:r.string(),data:r.object({webset:f,items:r.array(x),itemCount:r.number().optional()})}),be=r.object({type:r.literal("webset.search.completed"),id:r.string(),created_at:r.string(),data:r.object({webset:f,totalItems:r.number().optional()})}),he=r.object({query:r.string(),results:r.array(x),triggeredAt:r.string()}),ye=r.object({url:r.string(),title:r.string().nullable().optional(),publishedDate:r.string().nullable().optional(),author:r.string().nullable().optional(),indexedAt:r.string()}),Ee=r.object({webset:f,items:r.array(x),itemCount:r.number().optional(),triggeredAt:r.string()}),we=r.object({webset:f,totalItems:r.number().optional(),completedAt:r.string()});function pt(t){return typeof t=="string"?JSON.parse(t):t}function m(t){return s=>pt(s.body).type===t}function b(t,s){if(!s)return{valid:!1,error:"Missing webhook secret"};let o=t.rawBody;if(!o)return{valid:!1,error:"Missing raw body for signature verification"};let n=t.headers,a=Array.isArray(n["x-exa-signature"])?n["x-exa-signature"][0]:n["x-exa-signature"];if(!a)return{valid:!1,error:"Missing x-exa-signature header"};let p=at("sha256",s).update(o).digest("hex");try{let c=it(Buffer.from(a),Buffer.from(p));return{valid:c,error:c?void 0:"Invalid signature"}}catch{return{valid:!1,error:"Signature comparison failed"}}}var xe={match:m("content.indexed"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let a=s.payload;if(a.type!=="content.indexed")return{success:!0,data:void 0};let p="";if(t.db.searchResults)try{p=(await t.db.searchResults.upsertByEntityId(a.id,{id:a.id,...a.data,createdAt:a.data.publishedDate?new Date(a.data.publishedDate):new Date}))?.id||""}catch(c){console.warn("Failed to save indexed content to database:",c)}return await dt(t,"exa.webhook.contentIndexed",{url:a.data.url,title:a.data.title},"completed"),{success:!0,corsairEntityId:p,data:a}}};import{logEventFromContext as ct}from"corsair/core";var fe={match:m("search.alert"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let a=s.payload;if(a.type!=="search.alert")return{success:!0,data:void 0};if(t.db.searchResults)try{for(let p of a.data.results)await t.db.searchResults.upsertByEntityId(p.id,{...p,query:a.data.query,createdAt:p.publishedDate?new Date(p.publishedDate):new Date})}catch(p){console.warn("Failed to save search results to database:",p)}return await ct(t,"exa.webhook.searchAlert",{query:a.data.query,resultCount:a.data.results.length},"completed"),{success:!0,data:a}}};import{logEventFromContext as lt}from"corsair/core";var ge={match:m("webset.items_found"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let a=s.payload;if(a.type!=="webset.items_found")return{success:!0,data:void 0};let p="";if(t.db.websets)try{p=(await t.db.websets.upsertByEntityId(a.data.webset.id,{id:a.data.webset.id,status:a.data.webset.status,externalId:a.data.webset.externalId,createdAt:new Date(a.data.webset.createdAt),updatedAt:new Date(a.data.webset.updatedAt)}))?.id||""}catch(c){console.warn("Failed to save webset to database:",c)}if(t.db.searchResults)try{for(let c of a.data.items)await t.db.searchResults.upsertByEntityId(c.id,{...c,createdAt:c.publishedDate?new Date(c.publishedDate):new Date})}catch(c){console.warn("Failed to save webset items to database:",c)}return await lt(t,"exa.webhook.websetItemsFound",{websetId:a.data.webset.id,itemCount:a.data.items.length},"completed"),{success:!0,corsairEntityId:p,data:a}}};import{logEventFromContext as ut}from"corsair/core";var Ie={match:m("webset.search.completed"),handler:async(t,s)=>{let o=t.key,n=b(s,o);if(!n.valid)return{success:!1,statusCode:401,error:n.error||"Signature verification failed"};let a=s.payload;if(a.type!=="webset.search.completed")return{success:!0,data:void 0};let p="";if(t.db.websets)try{p=(await t.db.websets.upsertByEntityId(a.data.webset.id,{id:a.data.webset.id,status:a.data.webset.status,externalId:a.data.webset.externalId,createdAt:new Date(a.data.webset.createdAt),updatedAt:new Date(a.data.webset.updatedAt)}))?.id||""}catch(c){console.warn("Failed to save webset to database:",c)}return await ut(t,"exa.webhook.websetSearchCompleted",{websetId:a.data.webset.id,totalItems:a.data.totalItems},"completed"),{success:!0,corsairEntityId:p,data:a}}};var Se={searchAlert:fe},ve={contentIndexed:xe},A={websetItemsFound:ge,websetSearchCompleted:Ie};var mt={search:{search:k.search,findSimilar:k.findSimilar},contents:{get:Y.get},answer:{get:ee.get},websets:{create:E.create,get:E.get,delete:E.delete},imports:{create:w.create,list:w.list,delete:w.delete},monitors:{create:te.create},events:{list:C.list,get:C.get},webhooksApi:{list:oe.list}},bt={"search.search":{input:l.searchSearch,output:u.searchSearch},"search.findSimilar":{input:l.searchFindSimilar,output:u.searchFindSimilar},"contents.get":{input:l.contentsGet,output:u.contentsGet},"answer.get":{input:l.answerGet,output:u.answerGet},"websets.create":{input:l.websetsCreate,output:u.websetsCreate},"websets.get":{input:l.websetsGet,output:u.websetsGet},"websets.delete":{input:l.websetsDelete,output:u.websetsDelete},"imports.create":{input:l.importsCreate,output:u.importsCreate},"imports.list":{input:l.importsList,output:u.importsList},"imports.delete":{input:l.importsDelete,output:u.importsDelete},"monitors.create":{input:l.monitorsCreate,output:u.monitorsCreate},"events.list":{input:l.eventsList,output:u.eventsList},"events.get":{input:l.eventsGet,output:u.eventsGet},"webhooksApi.list":{input:l.webhooksApiList,output:u.webhooksApiList}},ht={search:{searchAlert:Se.searchAlert},content:{contentIndexed:ve.contentIndexed},webset:{websetItemsFound:A.websetItemsFound,websetSearchCompleted:A.websetSearchCompleted}},yt={"search.searchAlert":{description:"A monitored search query has new matching results",payload:le,response:he},"content.contentIndexed":{description:"A new web page has been indexed by Exa",payload:ue,response:ye},"webset.websetItemsFound":{description:"New items were found for a webset search",payload:me,response:Ee},"webset.websetSearchCompleted":{description:"A webset search has completed",payload:be,response:we}},Et="api_key",wt={"search.search":{riskLevel:"read",description:"Search the web using neural or keyword search"},"search.findSimilar":{riskLevel:"read",description:"Find web pages semantically similar to a given URL"},"contents.get":{riskLevel:"read",description:"Retrieve full text, highlights, or summaries from URLs or document IDs"},"answer.get":{riskLevel:"read",description:"Generate a direct, citation-backed answer to a natural language question"},"websets.create":{riskLevel:"write",description:"Create a new webset with search, import, and enrichment setup"},"websets.get":{riskLevel:"read",description:"Get details of a specific webset by its ID"},"websets.delete":{riskLevel:"destructive",description:"Delete a webset [DESTRUCTIVE]"},"imports.create":{riskLevel:"write",description:"Create a new import to upload data into a webset"},"imports.list":{riskLevel:"read",description:"List all imports for a webset"},"imports.delete":{riskLevel:"destructive",description:"Delete an existing import [DESTRUCTIVE]"},"monitors.create":{riskLevel:"write",description:"Create a new monitor to watch a webset for changes"},"events.list":{riskLevel:"read",description:"List all events that have occurred for a webset"},"events.get":{riskLevel:"read",description:"Get details of a specific webset event by its ID"},"webhooksApi.list":{riskLevel:"read",description:"List all webhooks configured for websets"}},Mo={api_key:{account:["one"]}};function zo(t={}){let s={...t,authType:t.authType??Et};return{id:"exa",schema:ce,options:s,hooks:s.hooks,webhookHooks:s.webhookHooks,endpoints:mt,webhooks:ht,endpointMeta:wt,endpointSchemas:bt,webhookSchemas:yt,pluginWebhookMatcher:o=>"x-exa-signature"in o.headers,errorHandlers:{...se,...s.errorHandlers},keyBuilder:async(o,n)=>{let a=o.authType;if(n==="webhook"&&s.webhookSecret)return s.webhookSecret;if(n==="webhook"){let p=await o.keys.get_webhook_signature();if(!p)throw new Error("[auth-missing:exa:webhook_signature]: Exa webhook signature is missing");return p}if(n==="endpoint"&&s.key)return s.key;if(o.authType==="api_key"){let p=await o.keys.get_api_key();if(!p)throw new Error("[auth-missing:exa:api_key]: Exa API Key is missing");return p}throw new Error(`[auth-missing:exa:${a}]: Exa key is missing`)}}}export{m as createExaEventMatch,zo as exa,Mo as exaAuthConfig,bt as exaEndpointSchemas};
|
|
@@ -105,13 +105,13 @@ export declare const ExaEvent: z.ZodObject<{
|
|
|
105
105
|
websetId: z.ZodOptional<z.ZodString>;
|
|
106
106
|
createdAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
|
|
107
107
|
}, "strip", z.ZodTypeAny, {
|
|
108
|
-
id: string;
|
|
109
108
|
type: string;
|
|
109
|
+
id: string;
|
|
110
110
|
createdAt?: Date | null | undefined;
|
|
111
111
|
websetId?: string | undefined;
|
|
112
112
|
}, {
|
|
113
|
-
id: string;
|
|
114
113
|
type: string;
|
|
114
|
+
id: string;
|
|
115
115
|
createdAt?: Date | null | undefined;
|
|
116
116
|
websetId?: string | undefined;
|
|
117
117
|
}>;
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -107,13 +107,13 @@ export declare const ExaSchema: {
|
|
|
107
107
|
websetId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
108
108
|
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodDate>>;
|
|
109
109
|
}, "strip", import("zod").ZodTypeAny, {
|
|
110
|
-
id: string;
|
|
111
110
|
type: string;
|
|
111
|
+
id: string;
|
|
112
112
|
createdAt?: Date | null | undefined;
|
|
113
113
|
websetId?: string | undefined;
|
|
114
114
|
}, {
|
|
115
|
-
id: string;
|
|
116
115
|
type: string;
|
|
116
|
+
id: string;
|
|
117
117
|
createdAt?: Date | null | undefined;
|
|
118
118
|
websetId?: string | undefined;
|
|
119
119
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-indexed.d.ts","sourceRoot":"","sources":["../../webhooks/content-indexed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"content-indexed.d.ts","sourceRoot":"","sources":["../../webhooks/content-indexed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAqDxD,CAAC"}
|
package/dist/webhooks/index.d.ts
CHANGED
|
@@ -2,9 +2,8 @@ export declare const SearchWebhooks: {
|
|
|
2
2
|
searchAlert: {
|
|
3
3
|
match: import("corsair/core").CorsairWebhookMatcher;
|
|
4
4
|
handler: import("corsair/core").CorsairWebhookHandler<import("..").ExaContext, {
|
|
5
|
-
id: string;
|
|
6
|
-
created_at: string;
|
|
7
5
|
type: "search.alert";
|
|
6
|
+
id: string;
|
|
8
7
|
data: {
|
|
9
8
|
query: string;
|
|
10
9
|
results: {
|
|
@@ -19,10 +18,10 @@ export declare const SearchWebhooks: {
|
|
|
19
18
|
score?: number | undefined;
|
|
20
19
|
}[];
|
|
21
20
|
};
|
|
22
|
-
}, {
|
|
23
|
-
id: string;
|
|
24
21
|
created_at: string;
|
|
22
|
+
}, {
|
|
25
23
|
type: "search.alert";
|
|
24
|
+
id: string;
|
|
26
25
|
data: {
|
|
27
26
|
query: string;
|
|
28
27
|
results: {
|
|
@@ -37,6 +36,7 @@ export declare const SearchWebhooks: {
|
|
|
37
36
|
score?: number | undefined;
|
|
38
37
|
}[];
|
|
39
38
|
};
|
|
39
|
+
created_at: string;
|
|
40
40
|
}>;
|
|
41
41
|
};
|
|
42
42
|
};
|
|
@@ -44,25 +44,25 @@ export declare const ContentWebhooks: {
|
|
|
44
44
|
contentIndexed: {
|
|
45
45
|
match: import("corsair/core").CorsairWebhookMatcher;
|
|
46
46
|
handler: import("corsair/core").CorsairWebhookHandler<import("..").ExaContext, {
|
|
47
|
-
id: string;
|
|
48
|
-
created_at: string;
|
|
49
47
|
type: "content.indexed";
|
|
48
|
+
id: string;
|
|
50
49
|
data: {
|
|
51
50
|
url: string;
|
|
52
51
|
title?: string | null | undefined;
|
|
53
52
|
publishedDate?: string | null | undefined;
|
|
54
53
|
author?: string | null | undefined;
|
|
55
54
|
};
|
|
56
|
-
}, {
|
|
57
|
-
id: string;
|
|
58
55
|
created_at: string;
|
|
56
|
+
}, {
|
|
59
57
|
type: "content.indexed";
|
|
58
|
+
id: string;
|
|
60
59
|
data: {
|
|
61
60
|
url: string;
|
|
62
61
|
title?: string | null | undefined;
|
|
63
62
|
publishedDate?: string | null | undefined;
|
|
64
63
|
author?: string | null | undefined;
|
|
65
64
|
};
|
|
65
|
+
created_at: string;
|
|
66
66
|
}>;
|
|
67
67
|
};
|
|
68
68
|
};
|
|
@@ -70,14 +70,13 @@ export declare const WebsetWebhooks: {
|
|
|
70
70
|
websetItemsFound: {
|
|
71
71
|
match: import("corsair/core").CorsairWebhookMatcher;
|
|
72
72
|
handler: import("corsair/core").CorsairWebhookHandler<import("..").ExaContext, {
|
|
73
|
-
id: string;
|
|
74
|
-
created_at: string;
|
|
75
73
|
type: "webset.items_found";
|
|
74
|
+
id: string;
|
|
76
75
|
data: {
|
|
77
76
|
webset: {
|
|
78
77
|
object: "webset";
|
|
79
|
-
id: string;
|
|
80
78
|
status: "idle" | "running" | "paused" | "done";
|
|
79
|
+
id: string;
|
|
81
80
|
createdAt: string;
|
|
82
81
|
updatedAt: string;
|
|
83
82
|
externalId?: string | undefined;
|
|
@@ -95,15 +94,15 @@ export declare const WebsetWebhooks: {
|
|
|
95
94
|
}[];
|
|
96
95
|
itemCount?: number | undefined;
|
|
97
96
|
};
|
|
98
|
-
}, {
|
|
99
|
-
id: string;
|
|
100
97
|
created_at: string;
|
|
98
|
+
}, {
|
|
101
99
|
type: "webset.items_found";
|
|
100
|
+
id: string;
|
|
102
101
|
data: {
|
|
103
102
|
webset: {
|
|
104
103
|
object: "webset";
|
|
105
|
-
id: string;
|
|
106
104
|
status: "idle" | "running" | "paused" | "done";
|
|
105
|
+
id: string;
|
|
107
106
|
createdAt: string;
|
|
108
107
|
updatedAt: string;
|
|
109
108
|
externalId?: string | undefined;
|
|
@@ -121,40 +120,41 @@ export declare const WebsetWebhooks: {
|
|
|
121
120
|
}[];
|
|
122
121
|
itemCount?: number | undefined;
|
|
123
122
|
};
|
|
123
|
+
created_at: string;
|
|
124
124
|
}>;
|
|
125
125
|
};
|
|
126
126
|
websetSearchCompleted: {
|
|
127
127
|
match: import("corsair/core").CorsairWebhookMatcher;
|
|
128
128
|
handler: import("corsair/core").CorsairWebhookHandler<import("..").ExaContext, {
|
|
129
|
-
id: string;
|
|
130
|
-
created_at: string;
|
|
131
129
|
type: "webset.search.completed";
|
|
130
|
+
id: string;
|
|
132
131
|
data: {
|
|
133
132
|
webset: {
|
|
134
133
|
object: "webset";
|
|
135
|
-
id: string;
|
|
136
134
|
status: "idle" | "running" | "paused" | "done";
|
|
135
|
+
id: string;
|
|
137
136
|
createdAt: string;
|
|
138
137
|
updatedAt: string;
|
|
139
138
|
externalId?: string | undefined;
|
|
140
139
|
};
|
|
141
140
|
totalItems?: number | undefined;
|
|
142
141
|
};
|
|
143
|
-
}, {
|
|
144
|
-
id: string;
|
|
145
142
|
created_at: string;
|
|
143
|
+
}, {
|
|
146
144
|
type: "webset.search.completed";
|
|
145
|
+
id: string;
|
|
147
146
|
data: {
|
|
148
147
|
webset: {
|
|
149
148
|
object: "webset";
|
|
150
|
-
id: string;
|
|
151
149
|
status: "idle" | "running" | "paused" | "done";
|
|
150
|
+
id: string;
|
|
152
151
|
createdAt: string;
|
|
153
152
|
updatedAt: string;
|
|
154
153
|
externalId?: string | undefined;
|
|
155
154
|
};
|
|
156
155
|
totalItems?: number | undefined;
|
|
157
156
|
};
|
|
157
|
+
created_at: string;
|
|
158
158
|
}>;
|
|
159
159
|
};
|
|
160
160
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-alert.d.ts","sourceRoot":"","sources":["../../webhooks/search-alert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"search-alert.d.ts","sourceRoot":"","sources":["../../webhooks/search-alert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,aAAa,CAmDlD,CAAC"}
|