@olane/o-lane 0.7.17 → 0.7.19

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 (115) hide show
  1. package/dist/src/capabilities/enums/o-capability.type-enum.d.ts +1 -0
  2. package/dist/src/capabilities/enums/o-capability.type-enum.d.ts.map +1 -1
  3. package/dist/src/capabilities/enums/o-capability.type-enum.js +1 -0
  4. package/dist/src/capabilities/index.d.ts +2 -1
  5. package/dist/src/capabilities/index.d.ts.map +1 -1
  6. package/dist/src/capabilities/index.js +2 -1
  7. package/dist/src/capabilities/interfaces/{o-capability.config.d.ts → o-capability.config-interface.d.ts} +5 -4
  8. package/dist/src/capabilities/interfaces/o-capability.config-interface.d.ts.map +1 -0
  9. package/dist/src/capabilities/interfaces/o-capability.result-interface.d.ts +1 -2
  10. package/dist/src/capabilities/interfaces/o-capability.result-interface.d.ts.map +1 -1
  11. package/dist/src/capabilities/o-capability.config.d.ts +24 -0
  12. package/dist/src/capabilities/o-capability.config.d.ts.map +1 -0
  13. package/dist/src/capabilities/o-capability.config.js +25 -0
  14. package/dist/src/capabilities/o-capability.d.ts +9 -5
  15. package/dist/src/capabilities/o-capability.d.ts.map +1 -1
  16. package/dist/src/capabilities/o-capability.intelligence.d.ts.map +1 -1
  17. package/dist/src/capabilities/o-capability.intelligence.js +4 -18
  18. package/dist/src/capabilities/o-capability.js +4 -5
  19. package/dist/src/capabilities/o-capability.result.d.ts +6 -12
  20. package/dist/src/capabilities/o-capability.result.d.ts.map +1 -1
  21. package/dist/src/capabilities/o-capability.result.js +2 -10
  22. package/dist/src/capabilities-all/o-capability.all.d.ts +2 -3
  23. package/dist/src/capabilities-all/o-capability.all.d.ts.map +1 -1
  24. package/dist/src/capabilities-all/o-capability.all.js +6 -8
  25. package/dist/src/capabilities-configure/interfaces/o-capability.configure-config.d.ts +2 -2
  26. package/dist/src/capabilities-configure/interfaces/o-capability.configure-config.d.ts.map +1 -1
  27. package/dist/src/capabilities-configure/o-capability.configure.d.ts +0 -15
  28. package/dist/src/capabilities-configure/o-capability.configure.d.ts.map +1 -1
  29. package/dist/src/capabilities-configure/o-capability.configure.js +61 -47
  30. package/dist/src/capabilities-evaluate/o-capability.evaluate.d.ts +1 -0
  31. package/dist/src/capabilities-evaluate/o-capability.evaluate.d.ts.map +1 -1
  32. package/dist/src/capabilities-evaluate/o-capability.evaluate.js +17 -2
  33. package/dist/src/capabilities-execute/execute.capability.d.ts +13 -0
  34. package/dist/src/capabilities-execute/execute.capability.d.ts.map +1 -0
  35. package/dist/src/capabilities-execute/execute.capability.js +111 -0
  36. package/dist/src/capabilities-execute/interfaces/o-capability.configure-config.d.ts +8 -0
  37. package/dist/src/capabilities-execute/interfaces/o-capability.configure-config.d.ts.map +1 -0
  38. package/dist/src/capabilities-multiple-step/interfaces/o-capability.multiple-step-config.d.ts +1 -1
  39. package/dist/src/capabilities-multiple-step/interfaces/o-capability.multiple-step-config.d.ts.map +1 -1
  40. package/dist/src/capabilities-multiple-step/o-capability.multiple-step.d.ts.map +1 -1
  41. package/dist/src/capabilities-multiple-step/o-capability.multiple-step.js +0 -1
  42. package/dist/src/capabilities-search/interfaces/o-capability.search-config.d.ts +1 -1
  43. package/dist/src/capabilities-search/interfaces/o-capability.search-config.d.ts.map +1 -1
  44. package/dist/src/capabilities-search/o-capability.search.d.ts.map +1 -1
  45. package/dist/src/capabilities-search/o-capability.search.js +0 -4
  46. package/dist/src/index.d.ts +1 -2
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +1 -2
  49. package/dist/src/interfaces/o-lane.config.d.ts +3 -0
  50. package/dist/src/interfaces/o-lane.config.d.ts.map +1 -1
  51. package/dist/src/o-lane.d.ts +6 -12
  52. package/dist/src/o-lane.d.ts.map +1 -1
  53. package/dist/src/o-lane.js +23 -180
  54. package/dist/src/o-lane.mixin.d.ts.map +1 -1
  55. package/dist/src/o-lane.mixin.js +9 -5
  56. package/dist/src/prompts/agent.prompt.d.ts +1 -12
  57. package/dist/src/prompts/agent.prompt.d.ts.map +1 -1
  58. package/dist/src/prompts/agent.prompt.js +80 -138
  59. package/dist/src/prompts/configure.prompt.d.ts +1 -8
  60. package/dist/src/prompts/configure.prompt.d.ts.map +1 -1
  61. package/dist/src/prompts/configure.prompt.js +68 -47
  62. package/dist/src/prompts/execute.prompt.d.ts +9 -0
  63. package/dist/src/prompts/execute.prompt.d.ts.map +1 -0
  64. package/dist/src/prompts/execute.prompt.js +47 -0
  65. package/dist/src/prompts/index.d.ts +3 -0
  66. package/dist/src/prompts/index.d.ts.map +1 -0
  67. package/dist/src/prompts/index.js +2 -0
  68. package/dist/src/prompts/interfaces/o-prompt.config.d.ts +8 -0
  69. package/dist/src/prompts/interfaces/o-prompt.config.d.ts.map +1 -0
  70. package/dist/src/prompts/interfaces/o-prompt.config.js +1 -0
  71. package/dist/src/prompts/o-prompt.d.ts +36 -0
  72. package/dist/src/prompts/o-prompt.d.ts.map +1 -0
  73. package/dist/src/prompts/o-prompt.js +92 -0
  74. package/dist/src/storage/default.prompt-loader.d.ts +14 -0
  75. package/dist/src/storage/default.prompt-loader.d.ts.map +1 -0
  76. package/dist/src/storage/default.prompt-loader.js +34 -0
  77. package/dist/src/storage/index.d.ts +1 -3
  78. package/dist/src/storage/index.d.ts.map +1 -1
  79. package/dist/src/storage/index.js +1 -5
  80. package/dist/src/storage/o-lane.storage-manager.d.ts +71 -0
  81. package/dist/src/storage/o-lane.storage-manager.d.ts.map +1 -0
  82. package/dist/src/storage/o-lane.storage-manager.js +208 -0
  83. package/dist/src/storage/prompt-loader.d.ts +10 -28
  84. package/dist/src/storage/prompt-loader.d.ts.map +1 -1
  85. package/dist/src/storage/prompt-loader.js +9 -112
  86. package/dist/test/index.d.ts +1 -0
  87. package/dist/test/index.d.ts.map +1 -0
  88. package/dist/test/index.js +2 -0
  89. package/package.json +12 -10
  90. package/dist/src/capabilities/interfaces/o-capability.config.d.ts.map +0 -1
  91. package/dist/src/capabilities-task/interfaces/o-capability.task-config.d.ts +0 -16
  92. package/dist/src/capabilities-task/interfaces/o-capability.task-config.d.ts.map +0 -1
  93. package/dist/src/capabilities-task/o-capability.task-result.d.ts +0 -5
  94. package/dist/src/capabilities-task/o-capability.task-result.d.ts.map +0 -1
  95. package/dist/src/capabilities-task/o-capability.task-result.js +0 -3
  96. package/dist/src/capabilities-task/o-capability.task.d.ts +0 -20
  97. package/dist/src/capabilities-task/o-capability.task.d.ts.map +0 -1
  98. package/dist/src/capabilities-task/o-capability.task.js +0 -124
  99. package/dist/src/storage/prompt-schema.d.ts +0 -42
  100. package/dist/src/storage/prompt-schema.d.ts.map +0 -1
  101. package/dist/src/storage/prompt-schema.js +0 -29
  102. package/dist/src/storage/prompt-seeder.d.ts +0 -42
  103. package/dist/src/storage/prompt-seeder.d.ts.map +0 -1
  104. package/dist/src/storage/prompt-seeder.js +0 -141
  105. package/dist/src/storage/prompt-storage-provider.tool.d.ts +0 -99
  106. package/dist/src/storage/prompt-storage-provider.tool.d.ts.map +0 -1
  107. package/dist/src/storage/prompt-storage-provider.tool.js +0 -320
  108. package/dist/test/prompt-seeder.spec.d.ts +0 -2
  109. package/dist/test/prompt-seeder.spec.d.ts.map +0 -1
  110. package/dist/test/prompt-seeder.spec.js +0 -256
  111. package/dist/test/prompt-storage-provider.spec.d.ts +0 -2
  112. package/dist/test/prompt-storage-provider.spec.d.ts.map +0 -1
  113. package/dist/test/prompt-storage-provider.spec.js +0 -457
  114. /package/dist/src/capabilities/interfaces/{o-capability.config.js → o-capability.config-interface.js} +0 -0
  115. /package/dist/src/{capabilities-task/interfaces/o-capability.task-config.js → capabilities-execute/interfaces/o-capability.configure-config.js} +0 -0
@@ -1,457 +0,0 @@
1
- import 'dotenv/config';
2
- import { expect } from 'chai';
3
- import { PromptStorageProvider } from '../src/storage/prompt-storage-provider.tool.js';
4
- import { TestEnvironment, SimpleNodeBuilder } from '@olane/o-node/test/helpers';
5
- import { assertRunning, assertStopped, assertSuccess, assertError } from '@olane/o-test';
6
- import { oNodeAddress } from '@olane/o-node';
7
- describe('PromptStorageProvider', () => {
8
- const env = new TestEnvironment();
9
- let storage;
10
- beforeEach(async () => {
11
- storage = await new SimpleNodeBuilder(PromptStorageProvider)
12
- .withAddress(new oNodeAddress('o://prompt-storage-test'))
13
- .build(env);
14
- });
15
- afterEach(async () => {
16
- await env.cleanup();
17
- });
18
- describe('Lifecycle', () => {
19
- it('should initialize successfully', () => {
20
- expect(storage).to.exist;
21
- assertRunning(storage);
22
- expect(storage.address.toString()).to.equal('o://prompt-storage-test');
23
- });
24
- it('should stop successfully', async () => {
25
- await storage.stop();
26
- assertStopped(storage);
27
- });
28
- });
29
- describe('Basic CRUD Operations', () => {
30
- it('should store and retrieve data', async () => {
31
- const putResult = await storage.use(storage.address, {
32
- method: 'put',
33
- params: {
34
- promptId: 'test-prompt-1',
35
- key: 'user_name',
36
- value: 'Alice',
37
- },
38
- });
39
- assertSuccess(putResult);
40
- const response = await storage.use(storage.address, {
41
- method: 'get',
42
- params: {
43
- promptId: 'test-prompt-1',
44
- key: 'user_name',
45
- },
46
- });
47
- assertSuccess(response);
48
- expect(response.result.data.value).to.equal('Alice');
49
- });
50
- it('should return null for non-existent key', async () => {
51
- const result = await storage.use(storage.address, {
52
- method: 'get',
53
- params: {
54
- promptId: 'test-prompt-1',
55
- key: 'nonexistent',
56
- },
57
- });
58
- assertSuccess(result);
59
- expect(result.result.data.value).to.be.null;
60
- });
61
- it('should return null for non-existent prompt', async () => {
62
- const result = await storage.use(storage.address, {
63
- method: 'get',
64
- params: {
65
- promptId: 'nonexistent-prompt',
66
- key: 'some_key',
67
- },
68
- });
69
- assertSuccess(result);
70
- expect(result.result.data.value).to.be.null;
71
- });
72
- it('should delete data', async () => {
73
- // Store data first
74
- await storage.use(storage.address, {
75
- method: 'put',
76
- params: {
77
- promptId: 'test-prompt-1',
78
- key: 'temp_data',
79
- value: 'temporary',
80
- },
81
- });
82
- // Verify it exists
83
- const beforeDelete = await storage.use(storage.address, {
84
- method: 'get',
85
- params: {
86
- promptId: 'test-prompt-1',
87
- key: 'temp_data',
88
- },
89
- });
90
- assertSuccess(beforeDelete);
91
- expect(beforeDelete.result.data.value).to.equal('temporary');
92
- // Delete it
93
- const deleteResult = await storage.use(storage.address, {
94
- method: 'delete',
95
- params: {
96
- promptId: 'test-prompt-1',
97
- key: 'temp_data',
98
- },
99
- });
100
- assertSuccess(deleteResult);
101
- // Verify it's gone
102
- const afterDelete = await storage.use(storage.address, {
103
- method: 'get',
104
- params: {
105
- promptId: 'test-prompt-1',
106
- key: 'temp_data',
107
- },
108
- });
109
- assertSuccess(afterDelete);
110
- expect(afterDelete.result.data.value).to.be.null;
111
- });
112
- it('should check key existence with has', async () => {
113
- // Check non-existent key
114
- const beforePut = await storage.use(storage.address, {
115
- method: 'has',
116
- params: {
117
- promptId: 'test-prompt-1',
118
- key: 'test_key',
119
- },
120
- });
121
- assertSuccess(beforePut);
122
- expect(beforePut.result.data.success).to.be.false;
123
- // Store data
124
- await storage.use(storage.address, {
125
- method: 'put',
126
- params: {
127
- promptId: 'test-prompt-1',
128
- key: 'test_key',
129
- value: 'test_value',
130
- },
131
- });
132
- // Check existing key
133
- const afterPut = await storage.use(storage.address, {
134
- method: 'has',
135
- params: {
136
- promptId: 'test-prompt-1',
137
- key: 'test_key',
138
- },
139
- });
140
- assertSuccess(afterPut);
141
- expect(afterPut.result.data.success).to.be.true;
142
- });
143
- });
144
- describe('Prompt Isolation', () => {
145
- it('should isolate data between different prompts', async () => {
146
- // Store same key in different prompts
147
- await storage.use(storage.address, {
148
- method: 'put',
149
- params: {
150
- promptId: 'prompt-1',
151
- key: 'shared_key',
152
- value: 'value-1',
153
- },
154
- });
155
- await storage.use(storage.address, {
156
- method: 'put',
157
- params: {
158
- promptId: 'prompt-2',
159
- key: 'shared_key',
160
- value: 'value-2',
161
- },
162
- });
163
- // Verify each prompt has its own value
164
- const result1 = await storage.use(storage.address, {
165
- method: 'get',
166
- params: {
167
- promptId: 'prompt-1',
168
- key: 'shared_key',
169
- },
170
- });
171
- expect(result1.result.data.value).to.equal('value-1');
172
- const result2 = await storage.use(storage.address, {
173
- method: 'get',
174
- params: {
175
- promptId: 'prompt-2',
176
- key: 'shared_key',
177
- },
178
- });
179
- expect(result2.result.data.value).to.equal('value-2');
180
- });
181
- it('should not leak data between prompts on delete', async () => {
182
- // Store in both prompts
183
- await storage.use(storage.address, {
184
- method: 'put',
185
- params: { promptId: 'prompt-1', key: 'key', value: 'value-1' },
186
- });
187
- await storage.use(storage.address, {
188
- method: 'put',
189
- params: { promptId: 'prompt-2', key: 'key', value: 'value-2' },
190
- });
191
- // Delete from prompt-1
192
- await storage.use(storage.address, {
193
- method: 'delete',
194
- params: { promptId: 'prompt-1', key: 'key' },
195
- });
196
- // Verify prompt-1 is deleted
197
- const result1 = await storage.use(storage.address, {
198
- method: 'get',
199
- params: { promptId: 'prompt-1', key: 'key' },
200
- });
201
- expect(result1.result.data.value).to.be.null;
202
- // Verify prompt-2 is unaffected
203
- const result2 = await storage.use(storage.address, {
204
- method: 'get',
205
- params: { promptId: 'prompt-2', key: 'key' },
206
- });
207
- expect(result2.result.data.value).to.equal('value-2');
208
- });
209
- });
210
- describe('Prompt Management', () => {
211
- it('should list all prompts', async () => {
212
- // Store data in multiple prompts
213
- await storage.use(storage.address, {
214
- method: 'put',
215
- params: { promptId: 'prompt-1', key: 'key1', value: 'value1' },
216
- });
217
- await storage.use(storage.address, {
218
- method: 'put',
219
- params: { promptId: 'prompt-2', key: 'key2', value: 'value2' },
220
- });
221
- await storage.use(storage.address, {
222
- method: 'put',
223
- params: { promptId: 'prompt-3', key: 'key3', value: 'value3' },
224
- });
225
- // List prompts
226
- const result = await storage.use(storage.address, {
227
- method: 'list_prompts',
228
- params: {},
229
- });
230
- assertSuccess(result);
231
- expect(result.result.data.count).to.equal(3);
232
- expect(result.result.data.promptIds).to.have.members([
233
- 'prompt-1',
234
- 'prompt-2',
235
- 'prompt-3',
236
- ]);
237
- });
238
- it('should clear a specific prompt', async () => {
239
- // Store multiple keys in a prompt
240
- await storage.use(storage.address, {
241
- method: 'put',
242
- params: { promptId: 'prompt-1', key: 'key1', value: 'value1' },
243
- });
244
- await storage.use(storage.address, {
245
- method: 'put',
246
- params: { promptId: 'prompt-1', key: 'key2', value: 'value2' },
247
- });
248
- await storage.use(storage.address, {
249
- method: 'put',
250
- params: { promptId: 'prompt-1', key: 'key3', value: 'value3' },
251
- });
252
- // Clear the prompt
253
- const clearResult = await storage.use(storage.address, {
254
- method: 'clear_prompt',
255
- params: { promptId: 'prompt-1' },
256
- });
257
- assertSuccess(clearResult);
258
- expect(clearResult.result.data.success).to.be.true;
259
- expect(clearResult.result.data.keysDeleted).to.equal(3);
260
- // Verify all keys are gone
261
- const getResult = await storage.use(storage.address, {
262
- method: 'get',
263
- params: { promptId: 'prompt-1', key: 'key1' },
264
- });
265
- assertSuccess(getResult);
266
- expect(getResult.result.data.value).to.be.null;
267
- });
268
- it('should get keys for a specific prompt', async () => {
269
- // Store multiple keys
270
- await storage.use(storage.address, {
271
- method: 'put',
272
- params: { promptId: 'prompt-1', key: 'name', value: 'Alice' },
273
- });
274
- await storage.use(storage.address, {
275
- method: 'put',
276
- params: { promptId: 'prompt-1', key: 'email', value: 'alice@example.com' },
277
- });
278
- await storage.use(storage.address, {
279
- method: 'put',
280
- params: { promptId: 'prompt-1', key: 'role', value: 'admin' },
281
- });
282
- // Get keys
283
- const result = await storage.use(storage.address, {
284
- method: 'get_prompt_keys',
285
- params: { promptId: 'prompt-1' },
286
- });
287
- assertSuccess(result);
288
- expect(result.result.data.count).to.equal(3);
289
- expect(result.result.data.keys).to.have.members(['name', 'email', 'role']);
290
- });
291
- it('should get stats for a specific prompt', async () => {
292
- // Store some data
293
- await storage.use(storage.address, {
294
- method: 'put',
295
- params: { promptId: 'prompt-1', key: 'key1', value: 'value1' },
296
- });
297
- await storage.use(storage.address, {
298
- method: 'put',
299
- params: { promptId: 'prompt-1', key: 'key2', value: 'value2' },
300
- });
301
- // Get stats
302
- const result = await storage.use(storage.address, {
303
- method: 'get_prompt_stats',
304
- params: { promptId: 'prompt-1' },
305
- });
306
- assertSuccess(result);
307
- expect(result.result.data.promptId).to.equal('prompt-1');
308
- expect(result.result.data.keyCount).to.equal(2);
309
- expect(result.result.data.exists).to.be.true;
310
- expect(result.result.data.lastAccessed).to.be.a('number');
311
- expect(result.result.data.createdAt).to.be.a('number');
312
- });
313
- it('should return empty stats for non-existent prompt', async () => {
314
- const result = await storage.use(storage.address, {
315
- method: 'get_prompt_stats',
316
- params: { promptId: 'nonexistent' },
317
- });
318
- assertSuccess(result);
319
- expect(result.result.data.exists).to.be.false;
320
- expect(result.result.data.keyCount).to.equal(0);
321
- });
322
- });
323
- describe('Validation', () => {
324
- it('should throw error for missing promptId in put', async () => {
325
- const response = await storage.use(storage.address, {
326
- method: 'put',
327
- params: { key: 'key', value: 'value' },
328
- });
329
- assertError(response, 'Missing required parameters');
330
- });
331
- it('should throw error for missing key in put', async () => {
332
- const result = await storage.use(storage.address, {
333
- method: 'put',
334
- params: { promptId: 'prompt-1', value: 'value' },
335
- });
336
- assertError(result, 'Missing required parameters');
337
- });
338
- it('should throw error for missing value in put', async () => {
339
- const result = await storage.use(storage.address, {
340
- method: 'put',
341
- params: { promptId: 'prompt-1', key: 'key' },
342
- });
343
- assertError(result, 'Missing required parameters');
344
- });
345
- it('should throw error for invalid promptId type', async () => {
346
- const result = await storage.use(storage.address, {
347
- method: 'get',
348
- params: { promptId: 123, key: 'key' },
349
- });
350
- assertError(result, 'promptId is required and must be a string');
351
- });
352
- });
353
- describe('Edge Cases', () => {
354
- it('should handle empty prompt list', async () => {
355
- const result = await storage.use(storage.address, {
356
- method: 'list_prompts',
357
- params: {},
358
- });
359
- assertSuccess(result);
360
- expect(result.result.data.count).to.equal(0);
361
- expect(result.result.data.promptIds).to.be.an('array').that.is.empty;
362
- });
363
- it('should handle clearing non-existent prompt', async () => {
364
- const result = await storage.use(storage.address, {
365
- method: 'clear_prompt',
366
- params: { promptId: 'nonexistent' },
367
- });
368
- assertSuccess(result);
369
- expect(result.result.data.keysDeleted).to.equal(0);
370
- });
371
- it('should handle deleting non-existent key', async () => {
372
- const result = await storage.use(storage.address, {
373
- method: 'delete',
374
- params: { promptId: 'prompt-1', key: 'nonexistent' },
375
- });
376
- assertSuccess(result);
377
- });
378
- it('should handle overwriting existing value', async () => {
379
- // Store initial value
380
- await storage.use(storage.address, {
381
- method: 'put',
382
- params: { promptId: 'prompt-1', key: 'key', value: 'value1' },
383
- });
384
- // Overwrite with new value
385
- await storage.use(storage.address, {
386
- method: 'put',
387
- params: { promptId: 'prompt-1', key: 'key', value: 'value2' },
388
- });
389
- // Verify new value
390
- const result = await storage.use(storage.address, {
391
- method: 'get',
392
- params: { promptId: 'prompt-1', key: 'key' },
393
- });
394
- assertSuccess(result);
395
- expect(result.result.data.value).to.equal('value2');
396
- });
397
- });
398
- describe('Max Prompts Limit', () => {
399
- it('should evict oldest prompt when max limit reached', async () => {
400
- // Create storage with limit
401
- await storage.stop();
402
- storage = await new SimpleNodeBuilder(PromptStorageProvider)
403
- .withAddress(new oNodeAddress('o://prompt-storage-test'))
404
- .withConfig({ maxPrompts: 3 })
405
- .build(env);
406
- // Add 3 prompts
407
- await storage.use(storage.address, {
408
- method: 'put',
409
- params: { promptId: 'prompt-1', key: 'key', value: 'value1' },
410
- });
411
- // Small delay to ensure different timestamps
412
- await new Promise((resolve) => setTimeout(resolve, 10));
413
- await storage.use(storage.address, {
414
- method: 'put',
415
- params: { promptId: 'prompt-2', key: 'key', value: 'value2' },
416
- });
417
- await new Promise((resolve) => setTimeout(resolve, 10));
418
- await storage.use(storage.address, {
419
- method: 'put',
420
- params: { promptId: 'prompt-3', key: 'key', value: 'value3' },
421
- });
422
- // Verify all 3 exist
423
- const before = await storage.use(storage.address, {
424
- method: 'list_prompts',
425
- params: {},
426
- });
427
- assertSuccess(before);
428
- expect(before.result.data.count).to.equal(3);
429
- // Add 4th prompt (should evict prompt-1)
430
- await storage.use(storage.address, {
431
- method: 'put',
432
- params: { promptId: 'prompt-4', key: 'key', value: 'value4' },
433
- });
434
- // Verify only 3 prompts remain
435
- const after = await storage.use(storage.address, {
436
- method: 'list_prompts',
437
- params: {},
438
- });
439
- assertSuccess(after);
440
- expect(after.result.data.count).to.equal(3);
441
- // Verify prompt-1 was evicted
442
- const result1 = await storage.use(storage.address, {
443
- method: 'get',
444
- params: { promptId: 'prompt-1', key: 'key' },
445
- });
446
- assertSuccess(result1);
447
- expect(result1.result.data.value).to.be.null;
448
- // Verify prompt-4 exists
449
- const result4 = await storage.use(storage.address, {
450
- method: 'get',
451
- params: { promptId: 'prompt-4', key: 'key' },
452
- });
453
- assertSuccess(result4);
454
- expect(result4.result.data.value).to.equal('value4');
455
- });
456
- });
457
- });