@getzep/zep-cloud 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cjs/Client.js +2 -2
  2. package/dist/cjs/api/resources/graph/client/Client.d.ts +1 -1
  3. package/dist/cjs/api/resources/graph/client/Client.js +1 -1
  4. package/dist/cjs/api/resources/thread/client/Client.d.ts +19 -0
  5. package/dist/cjs/api/resources/thread/client/Client.js +84 -0
  6. package/dist/cjs/api/resources/thread/client/requests/index.d.ts +0 -1
  7. package/dist/cjs/api/{resources/thread/client/requests → types}/AddThreadMessagesRequest.d.ts +1 -10
  8. package/dist/cjs/api/types/AddThreadMessagesResponse.d.ts +1 -0
  9. package/dist/cjs/api/types/index.d.ts +1 -0
  10. package/dist/cjs/api/types/index.js +1 -0
  11. package/dist/cjs/contextString.d.ts +5 -4
  12. package/dist/cjs/contextString.js +65 -8
  13. package/dist/cjs/serialization/resources/thread/client/requests/index.d.ts +0 -1
  14. package/dist/cjs/serialization/resources/thread/client/requests/index.js +1 -3
  15. package/dist/cjs/serialization/types/AddThreadMessagesRequest.d.ts +16 -0
  16. package/dist/cjs/serialization/{resources/thread/client/requests → types}/AddThreadMessagesRequest.js +3 -3
  17. package/dist/cjs/serialization/types/AddThreadMessagesResponse.d.ts +1 -0
  18. package/dist/cjs/serialization/types/AddThreadMessagesResponse.js +1 -0
  19. package/dist/cjs/serialization/types/index.d.ts +1 -0
  20. package/dist/cjs/serialization/types/index.js +1 -0
  21. package/dist/cjs/version.d.ts +1 -1
  22. package/dist/cjs/version.js +1 -1
  23. package/dist/esm/Client.mjs +2 -2
  24. package/dist/esm/api/resources/graph/client/Client.d.mts +1 -1
  25. package/dist/esm/api/resources/graph/client/Client.mjs +1 -1
  26. package/dist/esm/api/resources/thread/client/Client.d.mts +19 -0
  27. package/dist/esm/api/resources/thread/client/Client.mjs +84 -0
  28. package/dist/esm/api/resources/thread/client/requests/index.d.mts +0 -1
  29. package/dist/esm/api/{resources/thread/client/requests → types}/AddThreadMessagesRequest.d.mts +1 -10
  30. package/dist/esm/api/types/AddThreadMessagesResponse.d.mts +1 -0
  31. package/dist/esm/api/types/index.d.mts +1 -0
  32. package/dist/esm/api/types/index.mjs +1 -0
  33. package/dist/esm/contextString.d.mts +5 -4
  34. package/dist/esm/contextString.mjs +65 -8
  35. package/dist/esm/serialization/resources/thread/client/requests/index.d.mts +0 -1
  36. package/dist/esm/serialization/resources/thread/client/requests/index.mjs +0 -1
  37. package/dist/esm/serialization/types/AddThreadMessagesRequest.d.mts +16 -0
  38. package/dist/esm/serialization/{resources/thread/client/requests → types}/AddThreadMessagesRequest.mjs +3 -3
  39. package/dist/esm/serialization/types/AddThreadMessagesResponse.d.mts +1 -0
  40. package/dist/esm/serialization/types/AddThreadMessagesResponse.mjs +1 -0
  41. package/dist/esm/serialization/types/index.d.mts +1 -0
  42. package/dist/esm/serialization/types/index.mjs +1 -0
  43. package/dist/esm/version.d.mts +1 -1
  44. package/dist/esm/version.mjs +1 -1
  45. package/package.json +1 -1
  46. package/reference.md +79 -1
  47. package/dist/cjs/serialization/resources/thread/client/requests/AddThreadMessagesRequest.d.ts +0 -16
  48. package/dist/esm/serialization/resources/thread/client/requests/AddThreadMessagesRequest.d.mts +0 -16
  49. /package/dist/cjs/api/{resources/thread/client/requests → types}/AddThreadMessagesRequest.js +0 -0
  50. /package/dist/esm/api/{resources/thread/client/requests → types}/AddThreadMessagesRequest.mjs +0 -0
@@ -47,8 +47,8 @@ class ZepClient {
47
47
  this._options = Object.assign(Object.assign({}, _options), { headers: (0, headers_js_1.mergeHeaders)({
48
48
  "X-Fern-Language": "JavaScript",
49
49
  "X-Fern-SDK-Name": "zep-cloud",
50
- "X-Fern-SDK-Version": "3.2.0",
51
- "User-Agent": "zep-cloud/3.2.0",
50
+ "X-Fern-SDK-Version": "3.4.0",
51
+ "User-Agent": "zep-cloud/3.4.0",
52
52
  "X-Fern-Runtime": core.RUNTIME.type,
53
53
  "X-Fern-Runtime-Version": core.RUNTIME.version,
54
54
  }, _options === null || _options === void 0 ? void 0 : _options.headers) });
@@ -151,7 +151,7 @@ export declare class Graph {
151
151
  create(request: Zep.CreateGraphRequest, requestOptions?: Graph.RequestOptions): core.HttpResponsePromise<Zep.Graph>;
152
152
  private __create;
153
153
  /**
154
- * List all graphs. In order to list users, use user.list_ordered instead
154
+ * Returns all graphs. In order to list users, use user.list_ordered instead
155
155
  *
156
156
  * @param {Zep.GraphListAllRequest} request
157
157
  * @param {Graph.RequestOptions} requestOptions - Request-specific configuration.
@@ -707,7 +707,7 @@ class Graph {
707
707
  });
708
708
  }
709
709
  /**
710
- * List all graphs. In order to list users, use user.list_ordered instead
710
+ * Returns all graphs. In order to list users, use user.list_ordered instead
711
711
  *
712
712
  * @param {Zep.GraphListAllRequest} request
713
713
  * @param {Graph.RequestOptions} requestOptions - Request-specific configuration.
@@ -122,6 +122,25 @@ export declare class Thread {
122
122
  */
123
123
  addMessages(threadId: string, request: Zep.AddThreadMessagesRequest, requestOptions?: Thread.RequestOptions): core.HttpResponsePromise<Zep.AddThreadMessagesResponse>;
124
124
  private __addMessages;
125
+ /**
126
+ * Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
127
+ *
128
+ * @param {string} threadId - The ID of the thread to which messages should be added.
129
+ * @param {Zep.AddThreadMessagesRequest} request
130
+ * @param {Thread.RequestOptions} requestOptions - Request-specific configuration.
131
+ *
132
+ * @throws {@link Zep.InternalServerError}
133
+ *
134
+ * @example
135
+ * await client.thread.addMessagesBatch("threadId", {
136
+ * messages: [{
137
+ * content: "content",
138
+ * role: "norole"
139
+ * }]
140
+ * })
141
+ */
142
+ addMessagesBatch(threadId: string, request: Zep.AddThreadMessagesRequest, requestOptions?: Thread.RequestOptions): core.HttpResponsePromise<Zep.AddThreadMessagesResponse>;
143
+ private __addMessagesBatch;
125
144
  protected _getCustomAuthorizationHeaders(): Promise<{
126
145
  Authorization: string;
127
146
  }>;
@@ -595,6 +595,90 @@ class Thread {
595
595
  }
596
596
  });
597
597
  }
598
+ /**
599
+ * Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
600
+ *
601
+ * @param {string} threadId - The ID of the thread to which messages should be added.
602
+ * @param {Zep.AddThreadMessagesRequest} request
603
+ * @param {Thread.RequestOptions} requestOptions - Request-specific configuration.
604
+ *
605
+ * @throws {@link Zep.InternalServerError}
606
+ *
607
+ * @example
608
+ * await client.thread.addMessagesBatch("threadId", {
609
+ * messages: [{
610
+ * content: "content",
611
+ * role: "norole"
612
+ * }]
613
+ * })
614
+ */
615
+ addMessagesBatch(threadId, request, requestOptions) {
616
+ return core.HttpResponsePromise.fromPromise(this.__addMessagesBatch(threadId, request, requestOptions));
617
+ }
618
+ __addMessagesBatch(threadId, request, requestOptions) {
619
+ return __awaiter(this, void 0, void 0, function* () {
620
+ var _a, _b, _c, _d;
621
+ const _response = yield ((_a = this._options.fetcher) !== null && _a !== void 0 ? _a : core.fetcher)({
622
+ url: core.url.join((_c = (_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.ZepEnvironment.Default, `threads/${encodeURIComponent(threadId)}/messages-batch`),
623
+ method: "POST",
624
+ headers: (0, headers_js_1.mergeHeaders)((_d = this._options) === null || _d === void 0 ? void 0 : _d.headers, (0, headers_js_1.mergeOnlyDefinedHeaders)(Object.assign({}, (yield this._getCustomAuthorizationHeaders()))), requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers),
625
+ contentType: "application/json",
626
+ requestType: "json",
627
+ body: serializers.AddThreadMessagesRequest.jsonOrThrow(request, {
628
+ unrecognizedObjectKeys: "strip",
629
+ omitUndefined: true,
630
+ }),
631
+ timeoutMs: (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
632
+ maxRetries: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries,
633
+ abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
634
+ });
635
+ if (_response.ok) {
636
+ return {
637
+ data: serializers.AddThreadMessagesResponse.parseOrThrow(_response.body, {
638
+ unrecognizedObjectKeys: "passthrough",
639
+ allowUnrecognizedUnionMembers: true,
640
+ allowUnrecognizedEnumValues: true,
641
+ skipValidation: true,
642
+ breadcrumbsPrefix: ["response"],
643
+ }),
644
+ rawResponse: _response.rawResponse,
645
+ };
646
+ }
647
+ if (_response.error.reason === "status-code") {
648
+ switch (_response.error.statusCode) {
649
+ case 500:
650
+ throw new Zep.InternalServerError(serializers.ApiError.parseOrThrow(_response.error.body, {
651
+ unrecognizedObjectKeys: "passthrough",
652
+ allowUnrecognizedUnionMembers: true,
653
+ allowUnrecognizedEnumValues: true,
654
+ skipValidation: true,
655
+ breadcrumbsPrefix: ["response"],
656
+ }), _response.rawResponse);
657
+ default:
658
+ throw new errors.ZepError({
659
+ statusCode: _response.error.statusCode,
660
+ body: _response.error.body,
661
+ rawResponse: _response.rawResponse,
662
+ });
663
+ }
664
+ }
665
+ switch (_response.error.reason) {
666
+ case "non-json":
667
+ throw new errors.ZepError({
668
+ statusCode: _response.error.statusCode,
669
+ body: _response.error.rawBody,
670
+ rawResponse: _response.rawResponse,
671
+ });
672
+ case "timeout":
673
+ throw new errors.ZepTimeoutError("Timeout exceeded when calling POST /threads/{threadId}/messages-batch.");
674
+ case "unknown":
675
+ throw new errors.ZepError({
676
+ message: _response.error.errorMessage,
677
+ rawResponse: _response.rawResponse,
678
+ });
679
+ }
680
+ });
681
+ }
598
682
  _getCustomAuthorizationHeaders() {
599
683
  return __awaiter(this, void 0, void 0, function* () {
600
684
  var _a;
@@ -2,4 +2,3 @@ export { type ThreadListAllRequest } from "./ThreadListAllRequest.js";
2
2
  export { type CreateThreadRequest } from "./CreateThreadRequest.js";
3
3
  export { type ThreadGetUserContextRequest } from "./ThreadGetUserContextRequest.js";
4
4
  export { type ThreadGetRequest } from "./ThreadGetRequest.js";
5
- export { type AddThreadMessagesRequest } from "./AddThreadMessagesRequest.js";
@@ -1,16 +1,7 @@
1
1
  /**
2
2
  * This file was auto-generated by Fern from our API Definition.
3
3
  */
4
- import * as Zep from "../../../../index.js";
5
- /**
6
- * @example
7
- * {
8
- * messages: [{
9
- * content: "content",
10
- * role: "norole"
11
- * }]
12
- * }
13
- */
4
+ import * as Zep from "../index.js";
14
5
  export interface AddThreadMessagesRequest {
15
6
  /**
16
7
  * Optional list of role types to ignore when adding messages to graph memory.
@@ -3,4 +3,5 @@
3
3
  */
4
4
  export interface AddThreadMessagesResponse {
5
5
  context?: string;
6
+ messageUuids?: string[];
6
7
  }
@@ -1,4 +1,5 @@
1
1
  export * from "./ApiError.js";
2
+ export * from "./AddThreadMessagesRequest.js";
2
3
  export * from "./AddThreadMessagesResponse.js";
3
4
  export * from "./CloneGraphResponse.js";
4
5
  export * from "./EdgeType.js";
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ApiError.js"), exports);
18
+ __exportStar(require("./AddThreadMessagesRequest.js"), exports);
18
19
  __exportStar(require("./AddThreadMessagesResponse.js"), exports);
19
20
  __exportStar(require("./CloneGraphResponse.js"), exports);
20
21
  __exportStar(require("./EdgeType.js"), exports);
@@ -1,4 +1,4 @@
1
- import { EntityEdge, EntityNode } from "./api/index.js";
1
+ import { EntityEdge, EntityNode, Episode } from "./api/index.js";
2
2
  /**
3
3
  * Format the date range of an entity edge.
4
4
  *
@@ -7,10 +7,11 @@ import { EntityEdge, EntityNode } from "./api/index.js";
7
7
  */
8
8
  export declare function formatEdgeDateRange(edge: EntityEdge): string;
9
9
  /**
10
- * Compose a search context from entity edges and nodes.
10
+ * Compose a search context from entity edges, nodes, and episodes.
11
11
  *
12
12
  * @param edges - List of entity edges.
13
13
  * @param nodes - List of entity nodes.
14
- * @returns A formatted string containing facts and entities.
14
+ * @param episodes - List of episodes.
15
+ * @returns A formatted string containing facts, entities, and episodes.
15
16
  */
16
- export declare function composeContextString(edges: EntityEdge[], nodes: EntityNode[]): string;
17
+ export declare function composeContextString(edges: EntityEdge[], nodes: EntityNode[], episodes?: Episode[]): string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatEdgeDateRange = formatEdgeDateRange;
4
4
  exports.composeContextString = composeContextString;
5
5
  const TEMPLATE_STRING = `
6
- FACTS and ENTITIES represent relevant context to the current conversation.
6
+ FACTS and ENTITIES%episodesHeader% represent relevant context to the current conversation.
7
7
 
8
8
  # These are the most relevant facts and their valid date ranges
9
9
  # format: FACT (Date range: from - to)
@@ -12,10 +12,15 @@ FACTS and ENTITIES represent relevant context to the current conversation.
12
12
  </FACTS>
13
13
 
14
14
  # These are the most relevant entities
15
- # ENTITY_NAME: entity summary
15
+ # Name: ENTITY_NAME
16
+ # Label: entity_label (if present)
17
+ # Attributes: (if present)
18
+ # attr_name: attr_value
19
+ # Summary: entity summary
16
20
  <ENTITIES>
17
21
  %entities%
18
22
  </ENTITIES>
23
+ %episodesSection%
19
24
  `;
20
25
  /**
21
26
  * Format the date range of an entity edge.
@@ -56,20 +61,72 @@ function formatDate(date) {
56
61
  .replace(/^(\d{2})-(\d{2})-(\d{4})/, "$3-$1-$2");
57
62
  }
58
63
  /**
59
- * Compose a search context from entity edges and nodes.
64
+ * Compose a search context from entity edges, nodes, and episodes.
60
65
  *
61
66
  * @param edges - List of entity edges.
62
67
  * @param nodes - List of entity nodes.
63
- * @returns A formatted string containing facts and entities.
68
+ * @param episodes - List of episodes.
69
+ * @returns A formatted string containing facts, entities, and episodes.
64
70
  */
65
- function composeContextString(edges, nodes) {
71
+ function composeContextString(edges, nodes, episodes = []) {
66
72
  const facts = edges.map((edge) => {
67
- return ` - ${edge.fact} (${formatEdgeDateRange(edge)})`;
73
+ return ` - ${edge.fact} (Date range: ${formatEdgeDateRange(edge)})`;
68
74
  });
69
75
  const entities = nodes.map((node) => {
70
- return ` - ${node.name}: ${node.summary}`;
76
+ const entityParts = [`Name: ${node.name}`];
77
+ if (node.labels && node.labels.length > 0) {
78
+ const labels = [...node.labels];
79
+ const entityIndex = labels.indexOf('Entity');
80
+ if (entityIndex > -1) {
81
+ labels.splice(entityIndex, 1);
82
+ }
83
+ if (labels.length > 0) {
84
+ entityParts.push(`Label: ${labels[0]}`);
85
+ }
86
+ }
87
+ if (node.attributes && Object.keys(node.attributes).length > 0) {
88
+ const filteredAttributes = Object.assign({}, node.attributes);
89
+ delete filteredAttributes.labels;
90
+ if (Object.keys(filteredAttributes).length > 0) {
91
+ entityParts.push('Attributes:');
92
+ Object.entries(filteredAttributes).forEach(([key, value]) => {
93
+ entityParts.push(` ${key}: ${value}`);
94
+ });
95
+ }
96
+ }
97
+ if (node.summary && node.summary.trim()) {
98
+ entityParts.push(`Summary: ${node.summary}`);
99
+ }
100
+ return entityParts.join('\n');
71
101
  });
102
+ const episodesList = [];
103
+ if (episodes.length > 0) {
104
+ episodes.forEach((episode) => {
105
+ let rolePrefix = "";
106
+ if (episode.role && episode.roleType) {
107
+ rolePrefix = `${episode.role} (${episode.roleType}): `;
108
+ }
109
+ else if (episode.role) {
110
+ rolePrefix = `${episode.role}: `;
111
+ }
112
+ else if (episode.roleType) {
113
+ rolePrefix = `(${episode.roleType}): `;
114
+ }
115
+ const timestamp = formatDate(new Date(episode.createdAt));
116
+ const episodeStr = ` - ${rolePrefix}${episode.content} (${timestamp})`;
117
+ episodesList.push(episodeStr);
118
+ });
119
+ }
72
120
  const factsStr = facts.join("\n");
73
121
  const entitiesStr = entities.join("\n");
74
- return TEMPLATE_STRING.replace("%facts%", factsStr).replace("%entities%", entitiesStr);
122
+ const episodesStr = episodesList.join("\n");
123
+ const episodesHeader = episodes.length > 0 ? ", and EPISODES" : "";
124
+ const episodesSection = episodes.length > 0
125
+ ? `\n# These are the most relevant episodes\n<EPISODES>\n${episodesStr}\n</EPISODES>`
126
+ : "";
127
+ return TEMPLATE_STRING
128
+ .replace("%episodesHeader%", episodesHeader)
129
+ .replace("%facts%", factsStr)
130
+ .replace("%entities%", entitiesStr)
131
+ .replace("%episodesSection%", episodesSection);
75
132
  }
@@ -1,2 +1 @@
1
1
  export { CreateThreadRequest } from "./CreateThreadRequest.js";
2
- export { AddThreadMessagesRequest } from "./AddThreadMessagesRequest.js";
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AddThreadMessagesRequest = exports.CreateThreadRequest = void 0;
3
+ exports.CreateThreadRequest = void 0;
4
4
  var CreateThreadRequest_js_1 = require("./CreateThreadRequest.js");
5
5
  Object.defineProperty(exports, "CreateThreadRequest", { enumerable: true, get: function () { return CreateThreadRequest_js_1.CreateThreadRequest; } });
6
- var AddThreadMessagesRequest_js_1 = require("./AddThreadMessagesRequest.js");
7
- Object.defineProperty(exports, "AddThreadMessagesRequest", { enumerable: true, get: function () { return AddThreadMessagesRequest_js_1.AddThreadMessagesRequest; } });
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This file was auto-generated by Fern from our API Definition.
3
+ */
4
+ import * as serializers from "../index.js";
5
+ import * as Zep from "../../api/index.js";
6
+ import * as core from "../../core/index.js";
7
+ import { RoleType } from "./RoleType.js";
8
+ import { Message } from "./Message.js";
9
+ export declare const AddThreadMessagesRequest: core.serialization.ObjectSchema<serializers.AddThreadMessagesRequest.Raw, Zep.AddThreadMessagesRequest>;
10
+ export declare namespace AddThreadMessagesRequest {
11
+ interface Raw {
12
+ ignore_roles?: RoleType.Raw[] | null;
13
+ messages: Message.Raw[];
14
+ return_context?: boolean | null;
15
+ }
16
+ }
@@ -37,9 +37,9 @@ var __importStar = (this && this.__importStar) || (function () {
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.AddThreadMessagesRequest = void 0;
40
- const core = __importStar(require("../../../../../core/index.js"));
41
- const RoleType_js_1 = require("../../../../types/RoleType.js");
42
- const Message_js_1 = require("../../../../types/Message.js");
40
+ const core = __importStar(require("../../core/index.js"));
41
+ const RoleType_js_1 = require("./RoleType.js");
42
+ const Message_js_1 = require("./Message.js");
43
43
  exports.AddThreadMessagesRequest = core.serialization.object({
44
44
  ignoreRoles: core.serialization.property("ignore_roles", core.serialization.list(RoleType_js_1.RoleType).optional()),
45
45
  messages: core.serialization.list(Message_js_1.Message),
@@ -8,5 +8,6 @@ export declare const AddThreadMessagesResponse: core.serialization.ObjectSchema<
8
8
  export declare namespace AddThreadMessagesResponse {
9
9
  interface Raw {
10
10
  context?: string | null;
11
+ message_uuids?: string[] | null;
11
12
  }
12
13
  }
@@ -40,4 +40,5 @@ exports.AddThreadMessagesResponse = void 0;
40
40
  const core = __importStar(require("../../core/index.js"));
41
41
  exports.AddThreadMessagesResponse = core.serialization.object({
42
42
  context: core.serialization.string().optional(),
43
+ messageUuids: core.serialization.property("message_uuids", core.serialization.list(core.serialization.string()).optional()),
43
44
  });
@@ -1,4 +1,5 @@
1
1
  export * from "./ApiError.js";
2
+ export * from "./AddThreadMessagesRequest.js";
2
3
  export * from "./AddThreadMessagesResponse.js";
3
4
  export * from "./CloneGraphResponse.js";
4
5
  export * from "./EdgeType.js";
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ApiError.js"), exports);
18
+ __exportStar(require("./AddThreadMessagesRequest.js"), exports);
18
19
  __exportStar(require("./AddThreadMessagesResponse.js"), exports);
19
20
  __exportStar(require("./CloneGraphResponse.js"), exports);
20
21
  __exportStar(require("./EdgeType.js"), exports);
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "3.2.0";
1
+ export declare const SDK_VERSION = "3.4.0";
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SDK_VERSION = void 0;
4
- exports.SDK_VERSION = "3.2.0";
4
+ exports.SDK_VERSION = "3.4.0";
@@ -11,8 +11,8 @@ export class ZepClient {
11
11
  this._options = Object.assign(Object.assign({}, _options), { headers: mergeHeaders({
12
12
  "X-Fern-Language": "JavaScript",
13
13
  "X-Fern-SDK-Name": "zep-cloud",
14
- "X-Fern-SDK-Version": "3.2.0",
15
- "User-Agent": "zep-cloud/3.2.0",
14
+ "X-Fern-SDK-Version": "3.4.0",
15
+ "User-Agent": "zep-cloud/3.4.0",
16
16
  "X-Fern-Runtime": core.RUNTIME.type,
17
17
  "X-Fern-Runtime-Version": core.RUNTIME.version,
18
18
  }, _options === null || _options === void 0 ? void 0 : _options.headers) });
@@ -151,7 +151,7 @@ export declare class Graph {
151
151
  create(request: Zep.CreateGraphRequest, requestOptions?: Graph.RequestOptions): core.HttpResponsePromise<Zep.Graph>;
152
152
  private __create;
153
153
  /**
154
- * List all graphs. In order to list users, use user.list_ordered instead
154
+ * Returns all graphs. In order to list users, use user.list_ordered instead
155
155
  *
156
156
  * @param {Zep.GraphListAllRequest} request
157
157
  * @param {Graph.RequestOptions} requestOptions - Request-specific configuration.
@@ -671,7 +671,7 @@ export class Graph {
671
671
  });
672
672
  }
673
673
  /**
674
- * List all graphs. In order to list users, use user.list_ordered instead
674
+ * Returns all graphs. In order to list users, use user.list_ordered instead
675
675
  *
676
676
  * @param {Zep.GraphListAllRequest} request
677
677
  * @param {Graph.RequestOptions} requestOptions - Request-specific configuration.
@@ -122,6 +122,25 @@ export declare class Thread {
122
122
  */
123
123
  addMessages(threadId: string, request: Zep.AddThreadMessagesRequest, requestOptions?: Thread.RequestOptions): core.HttpResponsePromise<Zep.AddThreadMessagesResponse>;
124
124
  private __addMessages;
125
+ /**
126
+ * Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
127
+ *
128
+ * @param {string} threadId - The ID of the thread to which messages should be added.
129
+ * @param {Zep.AddThreadMessagesRequest} request
130
+ * @param {Thread.RequestOptions} requestOptions - Request-specific configuration.
131
+ *
132
+ * @throws {@link Zep.InternalServerError}
133
+ *
134
+ * @example
135
+ * await client.thread.addMessagesBatch("threadId", {
136
+ * messages: [{
137
+ * content: "content",
138
+ * role: "norole"
139
+ * }]
140
+ * })
141
+ */
142
+ addMessagesBatch(threadId: string, request: Zep.AddThreadMessagesRequest, requestOptions?: Thread.RequestOptions): core.HttpResponsePromise<Zep.AddThreadMessagesResponse>;
143
+ private __addMessagesBatch;
125
144
  protected _getCustomAuthorizationHeaders(): Promise<{
126
145
  Authorization: string;
127
146
  }>;
@@ -559,6 +559,90 @@ export class Thread {
559
559
  }
560
560
  });
561
561
  }
562
+ /**
563
+ * Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
564
+ *
565
+ * @param {string} threadId - The ID of the thread to which messages should be added.
566
+ * @param {Zep.AddThreadMessagesRequest} request
567
+ * @param {Thread.RequestOptions} requestOptions - Request-specific configuration.
568
+ *
569
+ * @throws {@link Zep.InternalServerError}
570
+ *
571
+ * @example
572
+ * await client.thread.addMessagesBatch("threadId", {
573
+ * messages: [{
574
+ * content: "content",
575
+ * role: "norole"
576
+ * }]
577
+ * })
578
+ */
579
+ addMessagesBatch(threadId, request, requestOptions) {
580
+ return core.HttpResponsePromise.fromPromise(this.__addMessagesBatch(threadId, request, requestOptions));
581
+ }
582
+ __addMessagesBatch(threadId, request, requestOptions) {
583
+ return __awaiter(this, void 0, void 0, function* () {
584
+ var _a, _b, _c, _d;
585
+ const _response = yield ((_a = this._options.fetcher) !== null && _a !== void 0 ? _a : core.fetcher)({
586
+ url: core.url.join((_c = (_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.ZepEnvironment.Default, `threads/${encodeURIComponent(threadId)}/messages-batch`),
587
+ method: "POST",
588
+ headers: mergeHeaders((_d = this._options) === null || _d === void 0 ? void 0 : _d.headers, mergeOnlyDefinedHeaders(Object.assign({}, (yield this._getCustomAuthorizationHeaders()))), requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers),
589
+ contentType: "application/json",
590
+ requestType: "json",
591
+ body: serializers.AddThreadMessagesRequest.jsonOrThrow(request, {
592
+ unrecognizedObjectKeys: "strip",
593
+ omitUndefined: true,
594
+ }),
595
+ timeoutMs: (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) != null ? requestOptions.timeoutInSeconds * 1000 : 60000,
596
+ maxRetries: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries,
597
+ abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
598
+ });
599
+ if (_response.ok) {
600
+ return {
601
+ data: serializers.AddThreadMessagesResponse.parseOrThrow(_response.body, {
602
+ unrecognizedObjectKeys: "passthrough",
603
+ allowUnrecognizedUnionMembers: true,
604
+ allowUnrecognizedEnumValues: true,
605
+ skipValidation: true,
606
+ breadcrumbsPrefix: ["response"],
607
+ }),
608
+ rawResponse: _response.rawResponse,
609
+ };
610
+ }
611
+ if (_response.error.reason === "status-code") {
612
+ switch (_response.error.statusCode) {
613
+ case 500:
614
+ throw new Zep.InternalServerError(serializers.ApiError.parseOrThrow(_response.error.body, {
615
+ unrecognizedObjectKeys: "passthrough",
616
+ allowUnrecognizedUnionMembers: true,
617
+ allowUnrecognizedEnumValues: true,
618
+ skipValidation: true,
619
+ breadcrumbsPrefix: ["response"],
620
+ }), _response.rawResponse);
621
+ default:
622
+ throw new errors.ZepError({
623
+ statusCode: _response.error.statusCode,
624
+ body: _response.error.body,
625
+ rawResponse: _response.rawResponse,
626
+ });
627
+ }
628
+ }
629
+ switch (_response.error.reason) {
630
+ case "non-json":
631
+ throw new errors.ZepError({
632
+ statusCode: _response.error.statusCode,
633
+ body: _response.error.rawBody,
634
+ rawResponse: _response.rawResponse,
635
+ });
636
+ case "timeout":
637
+ throw new errors.ZepTimeoutError("Timeout exceeded when calling POST /threads/{threadId}/messages-batch.");
638
+ case "unknown":
639
+ throw new errors.ZepError({
640
+ message: _response.error.errorMessage,
641
+ rawResponse: _response.rawResponse,
642
+ });
643
+ }
644
+ });
645
+ }
562
646
  _getCustomAuthorizationHeaders() {
563
647
  return __awaiter(this, void 0, void 0, function* () {
564
648
  var _a;
@@ -2,4 +2,3 @@ export { type ThreadListAllRequest } from "./ThreadListAllRequest.mjs";
2
2
  export { type CreateThreadRequest } from "./CreateThreadRequest.mjs";
3
3
  export { type ThreadGetUserContextRequest } from "./ThreadGetUserContextRequest.mjs";
4
4
  export { type ThreadGetRequest } from "./ThreadGetRequest.mjs";
5
- export { type AddThreadMessagesRequest } from "./AddThreadMessagesRequest.mjs";
@@ -1,16 +1,7 @@
1
1
  /**
2
2
  * This file was auto-generated by Fern from our API Definition.
3
3
  */
4
- import * as Zep from "../../../../index.mjs";
5
- /**
6
- * @example
7
- * {
8
- * messages: [{
9
- * content: "content",
10
- * role: "norole"
11
- * }]
12
- * }
13
- */
4
+ import * as Zep from "../index.mjs";
14
5
  export interface AddThreadMessagesRequest {
15
6
  /**
16
7
  * Optional list of role types to ignore when adding messages to graph memory.
@@ -3,4 +3,5 @@
3
3
  */
4
4
  export interface AddThreadMessagesResponse {
5
5
  context?: string;
6
+ messageUuids?: string[];
6
7
  }
@@ -1,4 +1,5 @@
1
1
  export * from "./ApiError.mjs";
2
+ export * from "./AddThreadMessagesRequest.mjs";
2
3
  export * from "./AddThreadMessagesResponse.mjs";
3
4
  export * from "./CloneGraphResponse.mjs";
4
5
  export * from "./EdgeType.mjs";
@@ -1,4 +1,5 @@
1
1
  export * from "./ApiError.mjs";
2
+ export * from "./AddThreadMessagesRequest.mjs";
2
3
  export * from "./AddThreadMessagesResponse.mjs";
3
4
  export * from "./CloneGraphResponse.mjs";
4
5
  export * from "./EdgeType.mjs";
@@ -1,4 +1,4 @@
1
- import { EntityEdge, EntityNode } from "./api/index.mjs";
1
+ import { EntityEdge, EntityNode, Episode } from "./api/index.mjs";
2
2
  /**
3
3
  * Format the date range of an entity edge.
4
4
  *
@@ -7,10 +7,11 @@ import { EntityEdge, EntityNode } from "./api/index.mjs";
7
7
  */
8
8
  export declare function formatEdgeDateRange(edge: EntityEdge): string;
9
9
  /**
10
- * Compose a search context from entity edges and nodes.
10
+ * Compose a search context from entity edges, nodes, and episodes.
11
11
  *
12
12
  * @param edges - List of entity edges.
13
13
  * @param nodes - List of entity nodes.
14
- * @returns A formatted string containing facts and entities.
14
+ * @param episodes - List of episodes.
15
+ * @returns A formatted string containing facts, entities, and episodes.
15
16
  */
16
- export declare function composeContextString(edges: EntityEdge[], nodes: EntityNode[]): string;
17
+ export declare function composeContextString(edges: EntityEdge[], nodes: EntityNode[], episodes?: Episode[]): string;
@@ -1,5 +1,5 @@
1
1
  const TEMPLATE_STRING = `
2
- FACTS and ENTITIES represent relevant context to the current conversation.
2
+ FACTS and ENTITIES%episodesHeader% represent relevant context to the current conversation.
3
3
 
4
4
  # These are the most relevant facts and their valid date ranges
5
5
  # format: FACT (Date range: from - to)
@@ -8,10 +8,15 @@ FACTS and ENTITIES represent relevant context to the current conversation.
8
8
  </FACTS>
9
9
 
10
10
  # These are the most relevant entities
11
- # ENTITY_NAME: entity summary
11
+ # Name: ENTITY_NAME
12
+ # Label: entity_label (if present)
13
+ # Attributes: (if present)
14
+ # attr_name: attr_value
15
+ # Summary: entity summary
12
16
  <ENTITIES>
13
17
  %entities%
14
18
  </ENTITIES>
19
+ %episodesSection%
15
20
  `;
16
21
  /**
17
22
  * Format the date range of an entity edge.
@@ -52,20 +57,72 @@ function formatDate(date) {
52
57
  .replace(/^(\d{2})-(\d{2})-(\d{4})/, "$3-$1-$2");
53
58
  }
54
59
  /**
55
- * Compose a search context from entity edges and nodes.
60
+ * Compose a search context from entity edges, nodes, and episodes.
56
61
  *
57
62
  * @param edges - List of entity edges.
58
63
  * @param nodes - List of entity nodes.
59
- * @returns A formatted string containing facts and entities.
64
+ * @param episodes - List of episodes.
65
+ * @returns A formatted string containing facts, entities, and episodes.
60
66
  */
61
- export function composeContextString(edges, nodes) {
67
+ export function composeContextString(edges, nodes, episodes = []) {
62
68
  const facts = edges.map((edge) => {
63
- return ` - ${edge.fact} (${formatEdgeDateRange(edge)})`;
69
+ return ` - ${edge.fact} (Date range: ${formatEdgeDateRange(edge)})`;
64
70
  });
65
71
  const entities = nodes.map((node) => {
66
- return ` - ${node.name}: ${node.summary}`;
72
+ const entityParts = [`Name: ${node.name}`];
73
+ if (node.labels && node.labels.length > 0) {
74
+ const labels = [...node.labels];
75
+ const entityIndex = labels.indexOf('Entity');
76
+ if (entityIndex > -1) {
77
+ labels.splice(entityIndex, 1);
78
+ }
79
+ if (labels.length > 0) {
80
+ entityParts.push(`Label: ${labels[0]}`);
81
+ }
82
+ }
83
+ if (node.attributes && Object.keys(node.attributes).length > 0) {
84
+ const filteredAttributes = Object.assign({}, node.attributes);
85
+ delete filteredAttributes.labels;
86
+ if (Object.keys(filteredAttributes).length > 0) {
87
+ entityParts.push('Attributes:');
88
+ Object.entries(filteredAttributes).forEach(([key, value]) => {
89
+ entityParts.push(` ${key}: ${value}`);
90
+ });
91
+ }
92
+ }
93
+ if (node.summary && node.summary.trim()) {
94
+ entityParts.push(`Summary: ${node.summary}`);
95
+ }
96
+ return entityParts.join('\n');
67
97
  });
98
+ const episodesList = [];
99
+ if (episodes.length > 0) {
100
+ episodes.forEach((episode) => {
101
+ let rolePrefix = "";
102
+ if (episode.role && episode.roleType) {
103
+ rolePrefix = `${episode.role} (${episode.roleType}): `;
104
+ }
105
+ else if (episode.role) {
106
+ rolePrefix = `${episode.role}: `;
107
+ }
108
+ else if (episode.roleType) {
109
+ rolePrefix = `(${episode.roleType}): `;
110
+ }
111
+ const timestamp = formatDate(new Date(episode.createdAt));
112
+ const episodeStr = ` - ${rolePrefix}${episode.content} (${timestamp})`;
113
+ episodesList.push(episodeStr);
114
+ });
115
+ }
68
116
  const factsStr = facts.join("\n");
69
117
  const entitiesStr = entities.join("\n");
70
- return TEMPLATE_STRING.replace("%facts%", factsStr).replace("%entities%", entitiesStr);
118
+ const episodesStr = episodesList.join("\n");
119
+ const episodesHeader = episodes.length > 0 ? ", and EPISODES" : "";
120
+ const episodesSection = episodes.length > 0
121
+ ? `\n# These are the most relevant episodes\n<EPISODES>\n${episodesStr}\n</EPISODES>`
122
+ : "";
123
+ return TEMPLATE_STRING
124
+ .replace("%episodesHeader%", episodesHeader)
125
+ .replace("%facts%", factsStr)
126
+ .replace("%entities%", entitiesStr)
127
+ .replace("%episodesSection%", episodesSection);
71
128
  }
@@ -1,2 +1 @@
1
1
  export { CreateThreadRequest } from "./CreateThreadRequest.mjs";
2
- export { AddThreadMessagesRequest } from "./AddThreadMessagesRequest.mjs";
@@ -1,2 +1 @@
1
1
  export { CreateThreadRequest } from "./CreateThreadRequest.mjs";
2
- export { AddThreadMessagesRequest } from "./AddThreadMessagesRequest.mjs";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This file was auto-generated by Fern from our API Definition.
3
+ */
4
+ import * as serializers from "../index.mjs";
5
+ import * as Zep from "../../api/index.mjs";
6
+ import * as core from "../../core/index.mjs";
7
+ import { RoleType } from "./RoleType.mjs";
8
+ import { Message } from "./Message.mjs";
9
+ export declare const AddThreadMessagesRequest: core.serialization.ObjectSchema<serializers.AddThreadMessagesRequest.Raw, Zep.AddThreadMessagesRequest>;
10
+ export declare namespace AddThreadMessagesRequest {
11
+ interface Raw {
12
+ ignore_roles?: RoleType.Raw[] | null;
13
+ messages: Message.Raw[];
14
+ return_context?: boolean | null;
15
+ }
16
+ }
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * This file was auto-generated by Fern from our API Definition.
3
3
  */
4
- import * as core from "../../../../../core/index.mjs";
5
- import { RoleType } from "../../../../types/RoleType.mjs";
6
- import { Message } from "../../../../types/Message.mjs";
4
+ import * as core from "../../core/index.mjs";
5
+ import { RoleType } from "./RoleType.mjs";
6
+ import { Message } from "./Message.mjs";
7
7
  export const AddThreadMessagesRequest = core.serialization.object({
8
8
  ignoreRoles: core.serialization.property("ignore_roles", core.serialization.list(RoleType).optional()),
9
9
  messages: core.serialization.list(Message),
@@ -8,5 +8,6 @@ export declare const AddThreadMessagesResponse: core.serialization.ObjectSchema<
8
8
  export declare namespace AddThreadMessagesResponse {
9
9
  interface Raw {
10
10
  context?: string | null;
11
+ message_uuids?: string[] | null;
11
12
  }
12
13
  }
@@ -4,4 +4,5 @@
4
4
  import * as core from "../../core/index.mjs";
5
5
  export const AddThreadMessagesResponse = core.serialization.object({
6
6
  context: core.serialization.string().optional(),
7
+ messageUuids: core.serialization.property("message_uuids", core.serialization.list(core.serialization.string()).optional()),
7
8
  });
@@ -1,4 +1,5 @@
1
1
  export * from "./ApiError.mjs";
2
+ export * from "./AddThreadMessagesRequest.mjs";
2
3
  export * from "./AddThreadMessagesResponse.mjs";
3
4
  export * from "./CloneGraphResponse.mjs";
4
5
  export * from "./EdgeType.mjs";
@@ -1,4 +1,5 @@
1
1
  export * from "./ApiError.mjs";
2
+ export * from "./AddThreadMessagesRequest.mjs";
2
3
  export * from "./AddThreadMessagesResponse.mjs";
3
4
  export * from "./CloneGraphResponse.mjs";
4
5
  export * from "./EdgeType.mjs";
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "3.2.0";
1
+ export declare const SDK_VERSION = "3.4.0";
@@ -1 +1 @@
1
- export const SDK_VERSION = "3.2.0";
1
+ export const SDK_VERSION = "3.4.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getzep/zep-cloud",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "private": false,
5
5
  "repository": "https://github.com/getzep/zep-js",
6
6
  "description": "Zep: Fast, scalable building blocks for production LLM apps",
package/reference.md CHANGED
@@ -471,7 +471,7 @@ await client.graph.create({
471
471
  <dl>
472
472
  <dd>
473
473
 
474
- List all graphs. In order to list users, use user.list_ordered instead
474
+ Returns all graphs. In order to list users, use user.list_ordered instead
475
475
 
476
476
  </dd>
477
477
  </dl>
@@ -1198,6 +1198,84 @@ await client.thread.addMessages("threadId", {
1198
1198
  </dl>
1199
1199
  </details>
1200
1200
 
1201
+ <details><summary><code>client.thread.<a href="/src/api/resources/thread/client/Client.ts">addMessagesBatch</a>(threadId, { ...params }) -> Zep.AddThreadMessagesResponse</code></summary>
1202
+ <dl>
1203
+ <dd>
1204
+
1205
+ #### 📝 Description
1206
+
1207
+ <dl>
1208
+ <dd>
1209
+
1210
+ <dl>
1211
+ <dd>
1212
+
1213
+ Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
1214
+
1215
+ </dd>
1216
+ </dl>
1217
+ </dd>
1218
+ </dl>
1219
+
1220
+ #### 🔌 Usage
1221
+
1222
+ <dl>
1223
+ <dd>
1224
+
1225
+ <dl>
1226
+ <dd>
1227
+
1228
+ ```typescript
1229
+ await client.thread.addMessagesBatch("threadId", {
1230
+ messages: [
1231
+ {
1232
+ content: "content",
1233
+ role: "norole",
1234
+ },
1235
+ ],
1236
+ });
1237
+ ```
1238
+
1239
+ </dd>
1240
+ </dl>
1241
+ </dd>
1242
+ </dl>
1243
+
1244
+ #### ⚙️ Parameters
1245
+
1246
+ <dl>
1247
+ <dd>
1248
+
1249
+ <dl>
1250
+ <dd>
1251
+
1252
+ **threadId:** `string` — The ID of the thread to which messages should be added.
1253
+
1254
+ </dd>
1255
+ </dl>
1256
+
1257
+ <dl>
1258
+ <dd>
1259
+
1260
+ **request:** `Zep.AddThreadMessagesRequest`
1261
+
1262
+ </dd>
1263
+ </dl>
1264
+
1265
+ <dl>
1266
+ <dd>
1267
+
1268
+ **requestOptions:** `Thread.RequestOptions`
1269
+
1270
+ </dd>
1271
+ </dl>
1272
+ </dd>
1273
+ </dl>
1274
+
1275
+ </dd>
1276
+ </dl>
1277
+ </details>
1278
+
1201
1279
  ## User
1202
1280
 
1203
1281
  <details><summary><code>client.user.<a href="/src/api/resources/user/client/Client.ts">add</a>({ ...params }) -> Zep.User</code></summary>
@@ -1,16 +0,0 @@
1
- /**
2
- * This file was auto-generated by Fern from our API Definition.
3
- */
4
- import * as serializers from "../../../../index.js";
5
- import * as Zep from "../../../../../api/index.js";
6
- import * as core from "../../../../../core/index.js";
7
- import { RoleType } from "../../../../types/RoleType.js";
8
- import { Message } from "../../../../types/Message.js";
9
- export declare const AddThreadMessagesRequest: core.serialization.Schema<serializers.AddThreadMessagesRequest.Raw, Zep.AddThreadMessagesRequest>;
10
- export declare namespace AddThreadMessagesRequest {
11
- interface Raw {
12
- ignore_roles?: RoleType.Raw[] | null;
13
- messages: Message.Raw[];
14
- return_context?: boolean | null;
15
- }
16
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * This file was auto-generated by Fern from our API Definition.
3
- */
4
- import * as serializers from "../../../../index.mjs";
5
- import * as Zep from "../../../../../api/index.mjs";
6
- import * as core from "../../../../../core/index.mjs";
7
- import { RoleType } from "../../../../types/RoleType.mjs";
8
- import { Message } from "../../../../types/Message.mjs";
9
- export declare const AddThreadMessagesRequest: core.serialization.Schema<serializers.AddThreadMessagesRequest.Raw, Zep.AddThreadMessagesRequest>;
10
- export declare namespace AddThreadMessagesRequest {
11
- interface Raw {
12
- ignore_roles?: RoleType.Raw[] | null;
13
- messages: Message.Raw[];
14
- return_context?: boolean | null;
15
- }
16
- }