@farukada/aws-langgraph-dynamodb-ts 0.0.9 → 0.0.11

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 (62) hide show
  1. package/README.md +8 -0
  2. package/dist/checkpointer/actions/get-tuple.d.ts.map +1 -1
  3. package/dist/checkpointer/actions/get-tuple.js +6 -20
  4. package/dist/checkpointer/actions/get-tuple.js.map +1 -1
  5. package/dist/checkpointer/actions/put-writes.js +1 -1
  6. package/dist/checkpointer/actions/put-writes.js.map +1 -1
  7. package/dist/checkpointer/actions/put.js +1 -1
  8. package/dist/checkpointer/actions/put.js.map +1 -1
  9. package/dist/checkpointer/index.d.ts.map +1 -1
  10. package/dist/checkpointer/index.js +4 -23
  11. package/dist/checkpointer/index.js.map +1 -1
  12. package/dist/checkpointer/utils/deserialization.d.ts +15 -0
  13. package/dist/checkpointer/utils/deserialization.d.ts.map +1 -0
  14. package/dist/checkpointer/utils/deserialization.js +39 -0
  15. package/dist/checkpointer/utils/deserialization.js.map +1 -0
  16. package/dist/checkpointer/utils/index.d.ts +1 -0
  17. package/dist/checkpointer/utils/index.d.ts.map +1 -1
  18. package/dist/checkpointer/utils/index.js +1 -0
  19. package/dist/checkpointer/utils/index.js.map +1 -1
  20. package/dist/checkpointer/utils/validation.d.ts +7 -7
  21. package/dist/checkpointer/utils/validation.d.ts.map +1 -1
  22. package/dist/checkpointer/utils/validation.js.map +1 -1
  23. package/dist/factory.d.ts +137 -0
  24. package/dist/factory.d.ts.map +1 -0
  25. package/dist/factory.js +175 -0
  26. package/dist/factory.js.map +1 -0
  27. package/dist/history/actions/add-message.d.ts.map +1 -1
  28. package/dist/history/actions/add-message.js +7 -23
  29. package/dist/history/actions/add-message.js.map +1 -1
  30. package/dist/history/actions/add-messages.d.ts.map +1 -1
  31. package/dist/history/actions/add-messages.js +7 -23
  32. package/dist/history/actions/add-messages.js.map +1 -1
  33. package/dist/history/utils/index.d.ts +1 -0
  34. package/dist/history/utils/index.d.ts.map +1 -1
  35. package/dist/history/utils/index.js +1 -0
  36. package/dist/history/utils/index.js.map +1 -1
  37. package/dist/history/utils/update-expression-builder.d.ts +34 -0
  38. package/dist/history/utils/update-expression-builder.d.ts.map +1 -0
  39. package/dist/history/utils/update-expression-builder.js +60 -0
  40. package/dist/history/utils/update-expression-builder.js.map +1 -0
  41. package/dist/history/utils/validation.d.ts +4 -4
  42. package/dist/history/utils/validation.d.ts.map +1 -1
  43. package/dist/history/utils/validation.js.map +1 -1
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/shared/utils/index.d.ts +3 -2
  49. package/dist/shared/utils/index.d.ts.map +1 -1
  50. package/dist/shared/utils/index.js +3 -2
  51. package/dist/shared/utils/index.js.map +1 -1
  52. package/dist/shared/utils/ttl.d.ts +13 -0
  53. package/dist/shared/utils/ttl.d.ts.map +1 -0
  54. package/dist/shared/utils/ttl.js +24 -0
  55. package/dist/shared/utils/ttl.js.map +1 -0
  56. package/dist/store/actions/put-operation.d.ts.map +1 -1
  57. package/dist/store/actions/put-operation.js +2 -2
  58. package/dist/store/actions/put-operation.js.map +1 -1
  59. package/dist/store/utils/validation.d.ts +5 -5
  60. package/dist/store/utils/validation.d.ts.map +1 -1
  61. package/dist/store/utils/validation.js.map +1 -1
  62. package/package.json +5 -3
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * Factory for creating DynamoDB persistence instances with sensible defaults
4
+ * Provides convenient methods for instantiating checkpointer, store, and chat history
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DynamoDBFactory = void 0;
8
+ const checkpointer_1 = require("./checkpointer");
9
+ const store_1 = require("./store");
10
+ const history_1 = require("./history");
11
+ /**
12
+ * Default table names with standard prefix
13
+ */
14
+ const DEFAULT_TABLE_PREFIX = 'langgraph';
15
+ /**
16
+ * Factory class for creating DynamoDB persistence instances
17
+ */
18
+ class DynamoDBFactory {
19
+ /**
20
+ * Create a DynamoDBSaver instance with sensible defaults
21
+ *
22
+ * @param options - Partial configuration options
23
+ * @param options.checkpointsTableName - Optional checkpoints table name (default: 'langgraph-checkpoints')
24
+ * @param options.writesTableName - Optional writes table name (default: 'langgraph-writes')
25
+ * @param options.ttlDays - Optional TTL in days for automatic cleanup
26
+ * @param options.serde - Optional custom serializer protocol
27
+ * @param options.clientConfig - Optional DynamoDB client configuration
28
+ * @returns Configured DynamoDBSaver instance
29
+ *
30
+ * @example
31
+ * ```TypeScript
32
+ * // Minimal configuration (uses defaults)
33
+ * const checkpointer = DynamoDBFactory.createSaver({
34
+ * clientConfig: { region: 'us-east-1' }
35
+ * });
36
+ *
37
+ * // Custom table names and TTL
38
+ * const checkpointer = DynamoDBFactory.createSaver({
39
+ * checkpointsTableName: 'my-checkpoints',
40
+ * writesTableName: 'my-writes',
41
+ * ttlDays: 30,
42
+ * });
43
+ * ```
44
+ */
45
+ static createSaver(options = {}) {
46
+ const config = {
47
+ checkpointsTableName: options.checkpointsTableName ?? `${DEFAULT_TABLE_PREFIX}-checkpoints`,
48
+ writesTableName: options.writesTableName ?? `${DEFAULT_TABLE_PREFIX}-writes`,
49
+ ttlDays: options.ttlDays,
50
+ serde: options.serde,
51
+ clientConfig: options.clientConfig,
52
+ };
53
+ return new checkpointer_1.DynamoDBSaver(config);
54
+ }
55
+ /**
56
+ * Create a DynamoDBStore instance with sensible defaults
57
+ *
58
+ * @param options - Partial configuration options
59
+ * @param options.memoryTableName - Optional memory table name (default: 'langgraph-memory')
60
+ * @param options.embedding - Optional Bedrock embeddings for semantic search
61
+ * @param options.ttlDays - Optional TTL in days for automatic cleanup
62
+ * @param options.clientConfig - Optional DynamoDB client configuration
63
+ * @returns Configured DynamoDBStore instance
64
+ *
65
+ * @example
66
+ * ```TypeScript
67
+ * // Without a semantic search
68
+ * const store = DynamoDBFactory.createStore({
69
+ * clientConfig: { region: 'us-east-1' }
70
+ * });
71
+ *
72
+ * // With semantic search
73
+ * import { BedrockEmbeddings } from '@langchain/aws';
74
+ *
75
+ * const store = DynamoDBFactory.createStore({
76
+ * embedding: new BedrockEmbeddings({
77
+ * model: 'amazon.titan-embed-text-v1',
78
+ * }),
79
+ * ttlDays: 90,
80
+ * });
81
+ * ```
82
+ */
83
+ static createStore(options = {}) {
84
+ const config = {
85
+ memoryTableName: options.memoryTableName ?? `${DEFAULT_TABLE_PREFIX}-memory`,
86
+ embedding: options.embedding,
87
+ ttlDays: options.ttlDays,
88
+ clientConfig: options.clientConfig,
89
+ };
90
+ return new store_1.DynamoDBStore(config);
91
+ }
92
+ /**
93
+ * Create a DynamoDBChatMessageHistory instance with sensible defaults
94
+ *
95
+ * @param options - Partial configuration options
96
+ * @param options.tableName - Optional chat history table name (default: 'langgraph-chat-history')
97
+ * @param options.ttlDays - Optional TTL in days for automatic cleanup
98
+ * @param options.clientConfig - Optional DynamoDB client configuration
99
+ * @returns Configured DynamoDBChatMessageHistory instance
100
+ *
101
+ * @example
102
+ * ```TypeScript
103
+ * // Minimal configuration (uses defaults)
104
+ * const history = DynamoDBFactory.createChatMessageHistory({
105
+ * clientConfig: { region: 'us-east-1' }
106
+ * });
107
+ *
108
+ * // Custom table name and TTL
109
+ * const history = DynamoDBFactory.createChatMessageHistory({
110
+ * tableName: 'my-chat-history',
111
+ * ttlDays: 365,
112
+ * });
113
+ * ```
114
+ */
115
+ static createChatMessageHistory(options = {}) {
116
+ const config = {
117
+ tableName: options.tableName ?? `${DEFAULT_TABLE_PREFIX}-chat-history`,
118
+ ttlDays: options.ttlDays,
119
+ clientConfig: options.clientConfig,
120
+ };
121
+ return new history_1.DynamoDBChatMessageHistory(config);
122
+ }
123
+ /**
124
+ * Create all DynamoDB persistence instances at once with a shared configuration
125
+ *
126
+ * @param options - Configuration options
127
+ * @param options.tablePrefix - Optional prefix for all table names (default: 'langgraph')
128
+ * @param options.ttlDays - Optional TTL in days for automatic cleanup (applies to all)
129
+ * @param options.clientConfig - Optional DynamoDB client configuration (shared)
130
+ * @param options.embedding - Optional Bedrock embeddings for semantic search in store
131
+ * @param options.serde - Optional custom serializer protocol for checkpointer
132
+ * @returns Object containing all three persistence instances
133
+ *
134
+ * @example
135
+ * ```TypeScript
136
+ * // Create all instances with shared configuration
137
+ * const { checkpointer, store, chatHistory } = DynamoDBFactory.createAll({
138
+ * tablePrefix: 'my-app',
139
+ * ttlDays: 30,
140
+ * clientConfig: { region: 'us-east-1' },
141
+ * });
142
+ *
143
+ * // Use with LangGraph
144
+ * const app = workflow.compile({
145
+ * checkpointer,
146
+ * store,
147
+ * });
148
+ * ```
149
+ */
150
+ static createAll(options = {}) {
151
+ const prefix = options.tablePrefix ?? DEFAULT_TABLE_PREFIX;
152
+ return {
153
+ checkpointer: this.createSaver({
154
+ checkpointsTableName: `${prefix}-checkpoints`,
155
+ writesTableName: `${prefix}-writes`,
156
+ ttlDays: options.ttlDays,
157
+ serde: options.serde,
158
+ clientConfig: options.clientConfig,
159
+ }),
160
+ store: this.createStore({
161
+ memoryTableName: `${prefix}-memory`,
162
+ embedding: options.embedding,
163
+ ttlDays: options.ttlDays,
164
+ clientConfig: options.clientConfig,
165
+ }),
166
+ chatHistory: this.createChatMessageHistory({
167
+ tableName: `${prefix}-chat-history`,
168
+ ttlDays: options.ttlDays,
169
+ clientConfig: options.clientConfig,
170
+ }),
171
+ };
172
+ }
173
+ }
174
+ exports.DynamoDBFactory = DynamoDBFactory;
175
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,iDAA+C;AAC/C,mCAAwC;AACxC,uCAAuD;AAKvD;;GAEG;AACH,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAa,eAAe;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,WAAW,CAAC,UAAyC,EAAE;QAC5D,MAAM,MAAM,GAAyB;YACnC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,GAAG,oBAAoB,cAAc;YAC3F,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,GAAG,oBAAoB,SAAS;YAC5E,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;QAEF,OAAO,IAAI,4BAAa,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,WAAW,CAAC,UAAyC,EAAE;QAC5D,MAAM,MAAM,GAAyB;YACnC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,GAAG,oBAAoB,SAAS;YAC5E,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;QAEF,OAAO,IAAI,qBAAa,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,wBAAwB,CAC7B,UAAsD,EAAE;QAExD,MAAM,MAAM,GAAsC;YAChD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,GAAG,oBAAoB,eAAe;YACtE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;QAEF,OAAO,IAAI,oCAA0B,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,SAAS,CACd,UAMI,EAAE;QAMN,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;QAE3D,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC7B,oBAAoB,EAAE,GAAG,MAAM,cAAc;gBAC7C,eAAe,EAAE,GAAG,MAAM,SAAS;gBACnC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC;YACF,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;gBACtB,eAAe,EAAE,GAAG,MAAM,SAAS;gBACnC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,wBAAwB,CAAC;gBACzC,SAAS,EAAE,GAAG,MAAM,eAAe;gBACnC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AAhLD,0CAgLC"}
@@ -1 +1 @@
1
- {"version":3,"file":"add-message.d.ts","sourceRoot":"","sources":["../../../src/history/actions/add-message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAWvD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAyDnF,CAAC"}
1
+ {"version":3,"file":"add-message.d.ts","sourceRoot":"","sources":["../../../src/history/actions/add-message.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAYvD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAU,QAAQ,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAkCnF,CAAC"}
@@ -20,33 +20,17 @@ const addMessageAction = async (params) => {
20
20
  (0, utils_1.validateMessage)(message);
21
21
  (0, utils_1.validateTitle)(title);
22
22
  (0, utils_1.validateTTLDays)(ttlDays);
23
- const now = Date.now();
24
23
  // Generate a title if this is the first message and no title provided
25
24
  let sessionTitle = title;
26
25
  if (!sessionTitle) {
27
26
  sessionTitle = (0, utils_1.generateTitle)(message);
28
27
  }
29
- // Build update expression
30
- const updateExpressionParts = ['updatedAt = :updatedAt'];
31
- const expressionAttributeValues = {
32
- ':updatedAt': now,
33
- ':createdAt': now,
34
- ':emptyList': [],
35
- ':one': 1,
36
- ':message': [message],
37
- };
38
- if (sessionTitle) {
39
- updateExpressionParts.push('title = if_not_exists(title, :title)');
40
- expressionAttributeValues[':title'] = sessionTitle;
41
- }
42
- updateExpressionParts.push('messages = list_append(if_not_exists(messages, :emptyList), :message)');
43
- updateExpressionParts.push('messageCount = if_not_exists(messageCount, :zero) + :one');
44
- expressionAttributeValues[':zero'] = 0;
45
- // Add TTL if configured
46
- if (ttlDays !== undefined) {
47
- updateExpressionParts.push('ttl = :ttl');
48
- expressionAttributeValues[':ttl'] = Math.floor(Date.now() / 1000) + ttlDays * 24 * 60 * 60;
49
- }
28
+ // Build update expression using utility
29
+ const { updateExpression, expressionAttributeValues } = (0, utils_1.buildMessageUpdateExpression)({
30
+ messages: message,
31
+ title: sessionTitle,
32
+ ttlDays,
33
+ });
50
34
  // Execute with retry logic
51
35
  await (0, utils_1.withDynamoDBRetry)(async () => {
52
36
  await client.update({
@@ -55,7 +39,7 @@ const addMessageAction = async (params) => {
55
39
  userId,
56
40
  sessionId,
57
41
  },
58
- UpdateExpression: `SET ${updateExpressionParts.join(', ')}, createdAt = if_not_exists(createdAt, :createdAt)`,
42
+ UpdateExpression: updateExpression,
59
43
  ExpressionAttributeValues: expressionAttributeValues,
60
44
  });
61
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"add-message.js","sourceRoot":"","sources":["../../../src/history/actions/add-message.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oCAQkB;AAElB;;;;;;GAMG;AACI,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAA8B,EAAiB,EAAE;IACtF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjF,kBAAkB;IAClB,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACvB,IAAA,yBAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IACrB,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,sEAAsE;IACtE,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,0BAA0B;IAC1B,MAAM,qBAAqB,GAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,yBAAyB,GAAwB;QACrD,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,CAAC,OAAO,CAAC;KACtB,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,qBAAqB,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnE,yBAAyB,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IACrD,CAAC;IAED,qBAAqB,CAAC,IAAI,CACxB,uEAAuE,CACxE,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvF,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvC,wBAAwB;IACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,yBAAyB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7F,CAAC;IAED,2BAA2B;IAC3B,MAAM,IAAA,yBAAiB,EAAC,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE;gBACH,MAAM;gBACN,SAAS;aACV;YACD,gBAAgB,EAAE,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD;YAC7G,yBAAyB,EAAE,yBAAyB;SACrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzDW,QAAA,gBAAgB,oBAyD3B"}
1
+ {"version":3,"file":"add-message.js","sourceRoot":"","sources":["../../../src/history/actions/add-message.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oCASkB;AAElB;;;;;;GAMG;AACI,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAA8B,EAAiB,EAAE;IACtF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjF,kBAAkB;IAClB,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACvB,IAAA,yBAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IACzB,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IACrB,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IAEzB,sEAAsE;IACtE,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,wCAAwC;IACxC,MAAM,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,GAAG,IAAA,oCAA4B,EAAC;QACnF,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,YAAY;QACnB,OAAO;KACR,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,IAAA,yBAAiB,EAAC,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE;gBACH,MAAM;gBACN,SAAS;aACV;YACD,gBAAgB,EAAE,gBAAgB;YAClC,yBAAyB,EAAE,yBAAyB;SACrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,gBAAgB,oBAkC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"add-messages.d.ts","sourceRoot":"","sources":["../../../src/history/actions/add-messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAWxD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,uBAAuB,KAAG,OAAO,CAAC,IAAI,CAyDrF,CAAC"}
1
+ {"version":3,"file":"add-messages.d.ts","sourceRoot":"","sources":["../../../src/history/actions/add-messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAYxD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,uBAAuB,KAAG,OAAO,CAAC,IAAI,CAkCrF,CAAC"}
@@ -21,33 +21,17 @@ const addMessagesAction = async (params) => {
21
21
  (0, utils_1.validateMessages)(messages);
22
22
  (0, utils_1.validateTitle)(title);
23
23
  (0, utils_1.validateTTLDays)(ttlDays);
24
- const now = Date.now();
25
24
  // Generate a title if this is the first message batch and no title provided
26
25
  let sessionTitle = title;
27
26
  if (!sessionTitle) {
28
27
  sessionTitle = (0, utils_1.generateTitle)(messages[0]);
29
28
  }
30
- // Build update expression
31
- const updateExpressionParts = ['updatedAt = :updatedAt'];
32
- const expressionAttributeValues = {
33
- ':updatedAt': now,
34
- ':createdAt': now,
35
- ':emptyList': [],
36
- ':messageCount': messages.length,
37
- ':messages': messages,
38
- };
39
- if (sessionTitle) {
40
- updateExpressionParts.push('title = if_not_exists(title, :title)');
41
- expressionAttributeValues[':title'] = sessionTitle;
42
- }
43
- updateExpressionParts.push('messages = list_append(if_not_exists(messages, :emptyList), :messages)');
44
- updateExpressionParts.push('messageCount = if_not_exists(messageCount, :zero) + :messageCount');
45
- expressionAttributeValues[':zero'] = 0;
46
- // Add TTL if configured
47
- if (ttlDays !== undefined) {
48
- updateExpressionParts.push('ttl = :ttl');
49
- expressionAttributeValues[':ttl'] = Math.floor(Date.now() / 1000) + ttlDays * 24 * 60 * 60;
50
- }
29
+ // Build update expression using utility
30
+ const { updateExpression, expressionAttributeValues } = (0, utils_1.buildMessageUpdateExpression)({
31
+ messages,
32
+ title: sessionTitle,
33
+ ttlDays,
34
+ });
51
35
  // Execute with retry logic
52
36
  await (0, utils_1.withDynamoDBRetry)(async () => {
53
37
  await client.update({
@@ -56,7 +40,7 @@ const addMessagesAction = async (params) => {
56
40
  userId,
57
41
  sessionId,
58
42
  },
59
- UpdateExpression: `SET ${updateExpressionParts.join(', ')}, createdAt = if_not_exists(createdAt, :createdAt)`,
43
+ UpdateExpression: updateExpression,
60
44
  ExpressionAttributeValues: expressionAttributeValues,
61
45
  });
62
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"add-messages.js","sourceRoot":"","sources":["../../../src/history/actions/add-messages.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oCAQkB;AAElB;;;;;;;GAOG;AACI,MAAM,iBAAiB,GAAG,KAAK,EAAE,MAA+B,EAAiB,EAAE;IACxF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAElF,kBAAkB;IAClB,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACvB,IAAA,yBAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAC3B,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IACrB,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,4EAA4E;IAC5E,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAA,qBAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,0BAA0B;IAC1B,MAAM,qBAAqB,GAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,yBAAyB,GAAwB;QACrD,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,QAAQ,CAAC,MAAM;QAChC,WAAW,EAAE,QAAQ;KACtB,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,qBAAqB,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnE,yBAAyB,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IACrD,CAAC;IAED,qBAAqB,CAAC,IAAI,CACxB,wEAAwE,CACzE,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChG,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvC,wBAAwB;IACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,yBAAyB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7F,CAAC;IAED,2BAA2B;IAC3B,MAAM,IAAA,yBAAiB,EAAC,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE;gBACH,MAAM;gBACN,SAAS;aACV;YACD,gBAAgB,EAAE,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD;YAC7G,yBAAyB,EAAE,yBAAyB;SACrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAzDW,QAAA,iBAAiB,qBAyD5B"}
1
+ {"version":3,"file":"add-messages.js","sourceRoot":"","sources":["../../../src/history/actions/add-messages.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oCASkB;AAElB;;;;;;;GAOG;AACI,MAAM,iBAAiB,GAAG,KAAK,EAAE,MAA+B,EAAiB,EAAE;IACxF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAElF,kBAAkB;IAClB,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACvB,IAAA,yBAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,wBAAgB,EAAC,QAAQ,CAAC,CAAC;IAC3B,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IACrB,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IAEzB,4EAA4E;IAC5E,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAA,qBAAa,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,wCAAwC;IACxC,MAAM,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,GAAG,IAAA,oCAA4B,EAAC;QACnF,QAAQ;QACR,KAAK,EAAE,YAAY;QACnB,OAAO;KACR,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,IAAA,yBAAiB,EAAC,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,SAAS,EAAE,SAAS;YACpB,GAAG,EAAE;gBACH,MAAM;gBACN,SAAS;aACV;YACD,gBAAgB,EAAE,gBAAgB;YAClC,yBAAyB,EAAE,yBAAyB;SACrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,iBAAiB,qBAkC5B"}
@@ -3,5 +3,6 @@
3
3
  */
4
4
  export * from './validation';
5
5
  export * from './title-generator';
6
+ export * from './update-expression-builder';
6
7
  export { withDynamoDBRetry } from '../../shared/utils';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/history/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/history/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.withDynamoDBRetry = void 0;
21
21
  __exportStar(require("./validation"), exports);
22
22
  __exportStar(require("./title-generator"), exports);
23
+ __exportStar(require("./update-expression-builder"), exports);
23
24
  var utils_1 = require("../../shared/utils");
24
25
  Object.defineProperty(exports, "withDynamoDBRetry", { enumerable: true, get: function () { return utils_1.withDynamoDBRetry; } });
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/history/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,oDAAkC;AAClC,4CAAuD;AAA9C,0GAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/history/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,oDAAkC;AAClC,8DAA4C;AAC5C,4CAAuD;AAA9C,0GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Update expression builder for chat message history
3
+ * Provides centralized logic for building DynamoDB update expressions
4
+ */
5
+ import type { BaseMessage } from '@langchain/core/messages';
6
+ /**
7
+ * Parameters for building message update expression
8
+ */
9
+ export interface BuildMessageUpdateExpressionParams {
10
+ /** Single message or array of messages to add */
11
+ messages: BaseMessage | BaseMessage[];
12
+ /** Optional session title */
13
+ title?: string;
14
+ /** Optional TTL in days */
15
+ ttlDays?: number;
16
+ }
17
+ /**
18
+ * Result of building update expression
19
+ */
20
+ export interface UpdateExpressionResult {
21
+ /** DynamoDB UpdateExpression string */
22
+ updateExpression: string;
23
+ /** Expression attribute values */
24
+ expressionAttributeValues: Record<string, any>;
25
+ }
26
+ /**
27
+ * Build DynamoDB update expression for adding messages to a session
28
+ * Handles both single messages and message arrays
29
+ *
30
+ * @param params - Parameters for building the expression
31
+ * @returns Update expression and attribute values
32
+ */
33
+ export declare function buildMessageUpdateExpression(params: BuildMessageUpdateExpressionParams): UpdateExpressionResult;
34
+ //# sourceMappingURL=update-expression-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-expression-builder.d.ts","sourceRoot":"","sources":["../../../src/history/utils/update-expression-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,iDAAiD;IACjD,QAAQ,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACtC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,kCAAkC,GACzC,sBAAsB,CAqDxB"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * Update expression builder for chat message history
4
+ * Provides centralized logic for building DynamoDB update expressions
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.buildMessageUpdateExpression = buildMessageUpdateExpression;
8
+ const shared_1 = require("../../shared");
9
+ /**
10
+ * Build DynamoDB update expression for adding messages to a session
11
+ * Handles both single messages and message arrays
12
+ *
13
+ * @param params - Parameters for building the expression
14
+ * @returns Update expression and attribute values
15
+ */
16
+ function buildMessageUpdateExpression(params) {
17
+ const { messages, title, ttlDays } = params;
18
+ const now = Date.now();
19
+ const isArray = Array.isArray(messages);
20
+ const messageArray = isArray ? messages : [messages];
21
+ const messageCount = messageArray.length;
22
+ // Build update expression parts
23
+ const updateExpressionParts = ['updatedAt = :updatedAt'];
24
+ const expressionAttributeValues = {
25
+ ':updatedAt': now,
26
+ ':createdAt': now,
27
+ ':emptyList': [],
28
+ ':zero': 0,
29
+ };
30
+ // Add title if provided
31
+ if (title) {
32
+ updateExpressionParts.push('title = if_not_exists(title, :title)');
33
+ expressionAttributeValues[':title'] = title;
34
+ }
35
+ // Add messages
36
+ if (isArray) {
37
+ updateExpressionParts.push('messages = list_append(if_not_exists(messages, :emptyList), :messages)');
38
+ updateExpressionParts.push('messageCount = if_not_exists(messageCount, :zero) + :messageCount');
39
+ expressionAttributeValues[':messages'] = messageArray;
40
+ expressionAttributeValues[':messageCount'] = messageCount;
41
+ }
42
+ else {
43
+ updateExpressionParts.push('messages = list_append(if_not_exists(messages, :emptyList), :message)');
44
+ updateExpressionParts.push('messageCount = if_not_exists(messageCount, :zero) + :one');
45
+ expressionAttributeValues[':message'] = messageArray;
46
+ expressionAttributeValues[':one'] = 1;
47
+ }
48
+ // Add TTL if configured
49
+ if (ttlDays !== undefined) {
50
+ updateExpressionParts.push('ttl = :ttl');
51
+ expressionAttributeValues[':ttl'] = (0, shared_1.calculateTTLTimestamp)(ttlDays);
52
+ }
53
+ // Build final update expression
54
+ const updateExpression = `SET ${updateExpressionParts.join(', ')}, createdAt = if_not_exists(createdAt, :createdAt)`;
55
+ return {
56
+ updateExpression,
57
+ expressionAttributeValues,
58
+ };
59
+ }
60
+ //# sourceMappingURL=update-expression-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-expression-builder.js","sourceRoot":"","sources":["../../../src/history/utils/update-expression-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAmCH,oEAuDC;AAtFD,yCAAqD;AAwBrD;;;;;;GAMG;AACH,SAAgB,4BAA4B,CAC1C,MAA0C;IAE1C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;IAEzC,gCAAgC;IAChC,MAAM,qBAAqB,GAAa,CAAC,wBAAwB,CAAC,CAAC;IACnE,MAAM,yBAAyB,GAAwB;QACrD,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,GAAG;QACjB,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,wBAAwB;IACxB,IAAI,KAAK,EAAE,CAAC;QACV,qBAAqB,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnE,yBAAyB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IAC9C,CAAC;IAED,eAAe;IACf,IAAI,OAAO,EAAE,CAAC;QACZ,qBAAqB,CAAC,IAAI,CACxB,wEAAwE,CACzE,CAAC;QACF,qBAAqB,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChG,yBAAyB,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC;QACtD,yBAAyB,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,qBAAqB,CAAC,IAAI,CACxB,uEAAuE,CACxE,CAAC;QACF,qBAAqB,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACvF,yBAAyB,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;QACrD,yBAAyB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,yBAAyB,CAAC,MAAM,CAAC,GAAG,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,gCAAgC;IAChC,MAAM,gBAAgB,GAAG,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC;IAErH,OAAO;QACL,gBAAgB;QAChB,yBAAyB;KAC1B,CAAC;AACJ,CAAC"}
@@ -14,14 +14,14 @@ export declare class HistoryValidationError extends Error {
14
14
  * @param userId - User identifier to validate
15
15
  * @throws HistoryValidationError if validation fails
16
16
  */
17
- export declare function validateUserId(userId: string): void;
17
+ export declare function validateUserId(userId: any): void;
18
18
  /**
19
19
  * Validate session ID
20
20
  *
21
21
  * @param sessionId - Session identifier to validate
22
22
  * @throws HistoryValidationError if validation fails
23
23
  */
24
- export declare function validateSessionId(sessionId: string): void;
24
+ export declare function validateSessionId(sessionId: any): void;
25
25
  /**
26
26
  * Validate a single message
27
27
  *
@@ -42,14 +42,14 @@ export declare function validateMessages(messages: BaseMessage[]): void;
42
42
  * @param title - Optional title string to validate
43
43
  * @throws HistoryValidationError if validation fails
44
44
  */
45
- export declare function validateTitle(title: string | undefined): void;
45
+ export declare function validateTitle(title: any): void;
46
46
  /**
47
47
  * Validate list limit parameter
48
48
  *
49
49
  * @param limit - Optional maximum number of items to return
50
50
  * @throws HistoryValidationError if validation fails
51
51
  */
52
- export declare function validateLimit(limit: number | undefined): void;
52
+ export declare function validateLimit(limit: any): void;
53
53
  /**
54
54
  * Validate TTL days (wraps shared validation with a history-specific error type)
55
55
  *
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/history/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUvD;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAoBnD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAoBzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAa1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAyB9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAc7D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAgB7D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAOjE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/history/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAUvD;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAoBhD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CAoBtD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAa1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAyB9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAc9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAgB9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAOjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/history/utils/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/history/utils/validation.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export { DynamoDBStore } from './store';
4
4
  export type { DynamoDBStoreOptions } from './store/types';
5
5
  export { DynamoDBChatMessageHistory } from './history';
6
6
  export type { DynamoDBChatMessageHistoryOptions, SessionMetadata } from './history/types';
7
+ export { DynamoDBFactory } from './factory';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,iCAAiC,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DynamoDBChatMessageHistory = exports.DynamoDBStore = exports.DynamoDBSaver = void 0;
3
+ exports.DynamoDBFactory = exports.DynamoDBChatMessageHistory = exports.DynamoDBStore = exports.DynamoDBSaver = void 0;
4
4
  var checkpointer_1 = require("./checkpointer");
5
5
  Object.defineProperty(exports, "DynamoDBSaver", { enumerable: true, get: function () { return checkpointer_1.DynamoDBSaver; } });
6
6
  var store_1 = require("./store");
7
7
  Object.defineProperty(exports, "DynamoDBStore", { enumerable: true, get: function () { return store_1.DynamoDBStore; } });
8
8
  var history_1 = require("./history");
9
9
  Object.defineProperty(exports, "DynamoDBChatMessageHistory", { enumerable: true, get: function () { return history_1.DynamoDBChatMessageHistory; } });
10
+ var factory_1 = require("./factory");
11
+ Object.defineProperty(exports, "DynamoDBFactory", { enumerable: true, get: function () { return factory_1.DynamoDBFactory; } });
10
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAAtC,6GAAA,aAAa,OAAA;AAEtB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,qCAAuD;AAA9C,qHAAA,0BAA0B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA+C;AAAtC,6GAAA,aAAa,OAAA;AAEtB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,qCAAuD;AAA9C,qHAAA,0BAA0B,OAAA;AAEnC,qCAA4C;AAAnC,0GAAA,eAAe,OAAA"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Shared utilities for store and checkpointer
2
+ * Shared utilities and types
3
3
  */
4
- export * from './retry';
5
4
  export * from './constants';
5
+ export * from './retry';
6
+ export * from './ttl';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Shared utilities for store and checkpointer
3
+ * Shared utilities and types
4
4
  */
5
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
6
  if (k2 === undefined) k2 = k;
@@ -17,6 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- __exportStar(require("./retry"), exports);
21
20
  __exportStar(require("./constants"), exports);
21
+ __exportStar(require("./retry"), exports);
22
+ __exportStar(require("./ttl"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,0CAAwB;AACxB,wCAAsB"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TTL (Time-To-Live) utility functions
3
+ * Provide centralized TTL calculation for DynamoDB items
4
+ */
5
+ /**
6
+ * Calculate Unix timestamp for TTL expiration
7
+ *
8
+ * @param ttlDays - Number of days until expiration
9
+ * @returns Unix timestamp in seconds for DynamoDB TTL attribute
10
+ * @throws Error if ttlDays would cause overflow
11
+ */
12
+ export declare function calculateTTLTimestamp(ttlDays: number): number;
13
+ //# sourceMappingURL=ttl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttl.d.ts","sourceRoot":"","sources":["../../../src/shared/utils/ttl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU7D"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * TTL (Time-To-Live) utility functions
4
+ * Provide centralized TTL calculation for DynamoDB items
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.calculateTTLTimestamp = calculateTTLTimestamp;
8
+ /**
9
+ * Calculate Unix timestamp for TTL expiration
10
+ *
11
+ * @param ttlDays - Number of days until expiration
12
+ * @returns Unix timestamp in seconds for DynamoDB TTL attribute
13
+ * @throws Error if ttlDays would cause overflow
14
+ */
15
+ function calculateTTLTimestamp(ttlDays) {
16
+ const ttlSeconds = ttlDays * 24 * 60 * 60;
17
+ const timestamp = Math.floor(Date.now() / 1000) + ttlSeconds;
18
+ // Sanity check: ensure we don't overflow Unix timestamp
19
+ if (timestamp > 2147483647) {
20
+ throw new Error('TTL would overflow Unix timestamp (max date: 2038-01-19)');
21
+ }
22
+ return timestamp;
23
+ }
24
+ //# sourceMappingURL=ttl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../src/shared/utils/ttl.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AASH,sDAUC;AAjBD;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,MAAM,UAAU,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;IAE7D,wDAAwD;IACxD,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"put-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/put-operation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAYpD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,QAAQ,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAsFvF,CAAC"}
1
+ {"version":3,"file":"put-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/put-operation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAapD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,QAAQ,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAqFvF,CAAC"}