@olane/o-lane 0.7.12-alpha.9 → 0.7.12

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