@lumenflow/memory 3.17.6 → 3.18.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.
@@ -0,0 +1,86 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Checkpoint lifecycle integration tests.
5
+ *
6
+ * Tests the full create -> persist -> load cycle for checkpoints,
7
+ * verifying they survive as memory nodes and can be queried back.
8
+ *
9
+ * Complements __tests__/mem-checkpoint-core.test.ts which focuses on
10
+ * validation and SRP boundary (no wu-events writes).
11
+ */
12
+ import { afterEach, describe, expect, it } from 'vitest';
13
+ import fs from 'node:fs/promises';
14
+ import os from 'node:os';
15
+ import path from 'node:path';
16
+ import { createCheckpoint } from '../mem-checkpoint-core.js';
17
+ import { loadMemory } from '../memory-store.js';
18
+ describe('checkpoint lifecycle (create -> persist -> load)', () => {
19
+ const tempRoots = [];
20
+ afterEach(async () => {
21
+ await Promise.all(tempRoots.map((root) => fs.rm(root, { recursive: true, force: true })));
22
+ tempRoots.length = 0;
23
+ });
24
+ async function makeTempDir() {
25
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), 'ckpt-lifecycle-'));
26
+ tempRoots.push(dir);
27
+ return dir;
28
+ }
29
+ it('creates a checkpoint that can be loaded back from memory store', async () => {
30
+ const baseDir = await makeTempDir();
31
+ const result = await createCheckpoint(baseDir, {
32
+ note: 'integration lifecycle test',
33
+ wuId: 'WU-100',
34
+ });
35
+ expect(result.success).toBe(true);
36
+ const memoryDir = path.join(baseDir, '.lumenflow', 'memory');
37
+ const memory = await loadMemory(memoryDir);
38
+ expect(memory.nodes).toHaveLength(1);
39
+ expect(memory.nodes[0]?.type).toBe('checkpoint');
40
+ expect(memory.nodes[0]?.content).toContain('integration lifecycle test');
41
+ expect(memory.nodes[0]?.wu_id).toBe('WU-100');
42
+ });
43
+ it('multiple checkpoints are preserved in order', async () => {
44
+ const baseDir = await makeTempDir();
45
+ await createCheckpoint(baseDir, { note: 'first checkpoint' });
46
+ await createCheckpoint(baseDir, { note: 'second checkpoint' });
47
+ await createCheckpoint(baseDir, { note: 'third checkpoint' });
48
+ const memoryDir = path.join(baseDir, '.lumenflow', 'memory');
49
+ const memory = await loadMemory(memoryDir);
50
+ expect(memory.nodes).toHaveLength(3);
51
+ expect(memory.nodes[0]?.content).toContain('first');
52
+ expect(memory.nodes[1]?.content).toContain('second');
53
+ expect(memory.nodes[2]?.content).toContain('third');
54
+ });
55
+ it('checkpoint with WU ID is queryable via byWu index', async () => {
56
+ const baseDir = await makeTempDir();
57
+ await createCheckpoint(baseDir, { note: 'wu checkpoint', wuId: 'WU-200' });
58
+ await createCheckpoint(baseDir, { note: 'no wu checkpoint' });
59
+ const memoryDir = path.join(baseDir, '.lumenflow', 'memory');
60
+ const memory = await loadMemory(memoryDir);
61
+ const wuNodes = memory.byWu.get('WU-200') ?? [];
62
+ expect(wuNodes).toHaveLength(1);
63
+ expect(wuNodes[0]?.content).toContain('wu checkpoint');
64
+ });
65
+ it('checkpoint without optional metadata omits metadata field', async () => {
66
+ const baseDir = await makeTempDir();
67
+ const result = await createCheckpoint(baseDir, { note: 'minimal' });
68
+ expect(result.checkpoint.metadata).toBeUndefined();
69
+ expect(result.checkpoint.wu_id).toBeUndefined();
70
+ expect(result.checkpoint.session_id).toBeUndefined();
71
+ });
72
+ it('checkpoint with gitDiffStat includes it in metadata', async () => {
73
+ const baseDir = await makeTempDir();
74
+ const result = await createCheckpoint(baseDir, {
75
+ note: 'with diff stat',
76
+ gitDiffStat: '3 files changed, 15 insertions(+), 2 deletions(-)',
77
+ });
78
+ expect(result.checkpoint.metadata?.gitDiffStat).toBe('3 files changed, 15 insertions(+), 2 deletions(-)');
79
+ });
80
+ it('checkpoint lifecycle is session-scoped', async () => {
81
+ const baseDir = await makeTempDir();
82
+ const result = await createCheckpoint(baseDir, { note: 'scoped' });
83
+ expect(result.checkpoint.lifecycle).toBe('session');
84
+ });
85
+ });
86
+ //# sourceMappingURL=checkpoint-lifecycle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-lifecycle.test.js","sourceRoot":"","sources":["../../src/__tests__/checkpoint-lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Edge case tests for decay scoring algorithm.
5
+ *
6
+ * Complements __tests__/decay-scoring.test.ts (happy-path) with:
7
+ * - Future timestamps (node created in the future relative to `now`)
8
+ * - Extremely short half-life values
9
+ * - Metadata missing the nested access sub-object
10
+ * - created_at newer than updated_at (uses max)
11
+ * - Default options path in computeDecayScore
12
+ * - Score ordering invariants (P0 > P3, recent > old)
13
+ */
14
+ import { describe, expect, it } from 'vitest';
15
+ import { computeRecencyScore, computeAccessScore, computeImportanceScore, computeDecayScore, DEFAULT_HALF_LIFE_MS, } from '../decay/scoring.js';
16
+ function makeNode(overrides = {}) {
17
+ return {
18
+ id: 'mem-edge',
19
+ type: 'note',
20
+ lifecycle: 'session',
21
+ content: 'edge case node',
22
+ created_at: new Date().toISOString(),
23
+ ...overrides,
24
+ };
25
+ }
26
+ describe('decay scoring edge cases: recency', () => {
27
+ it('returns score > 1 when node timestamp is in the future', () => {
28
+ const now = Date.now();
29
+ const futureTimestamp = now + DEFAULT_HALF_LIFE_MS;
30
+ const node = makeNode({ created_at: new Date(futureTimestamp).toISOString() });
31
+ const score = computeRecencyScore(node, DEFAULT_HALF_LIFE_MS, now);
32
+ // exp(-(-halfLife) / halfLife) = exp(1) ~= 2.718
33
+ expect(score).toBeCloseTo(Math.exp(1), 3);
34
+ expect(score).toBeGreaterThan(1);
35
+ });
36
+ it('handles very small half-life (1ms) for rapid decay', () => {
37
+ const now = Date.now();
38
+ const tenMsAgo = now - 10;
39
+ const node = makeNode({ created_at: new Date(tenMsAgo).toISOString() });
40
+ const score = computeRecencyScore(node, 1, now);
41
+ // exp(-10/1) = exp(-10) ~= 0.0000454
42
+ expect(score).toBeCloseTo(Math.exp(-10), 6);
43
+ expect(score).toBeLessThan(0.001);
44
+ });
45
+ it('uses created_at when updated_at is earlier than created_at', () => {
46
+ const now = Date.now();
47
+ const recentCreated = now - DEFAULT_HALF_LIFE_MS;
48
+ const olderUpdated = now - 3 * DEFAULT_HALF_LIFE_MS;
49
+ const node = makeNode({
50
+ created_at: new Date(recentCreated).toISOString(),
51
+ updated_at: new Date(olderUpdated).toISOString(),
52
+ });
53
+ const score = computeRecencyScore(node, DEFAULT_HALF_LIFE_MS, now);
54
+ // Math.max picks created_at (1 half-life ago), so exp(-1)
55
+ expect(score).toBeCloseTo(Math.exp(-1), 3);
56
+ });
57
+ it('treats identical created_at and updated_at the same as created_at only', () => {
58
+ const now = Date.now();
59
+ const ts = now - DEFAULT_HALF_LIFE_MS;
60
+ const isoTs = new Date(ts).toISOString();
61
+ const nodeWithBoth = makeNode({ created_at: isoTs, updated_at: isoTs });
62
+ const nodeWithJustCreated = makeNode({ created_at: isoTs });
63
+ const scoreBoth = computeRecencyScore(nodeWithBoth, DEFAULT_HALF_LIFE_MS, now);
64
+ const scoreCreatedOnly = computeRecencyScore(nodeWithJustCreated, DEFAULT_HALF_LIFE_MS, now);
65
+ expect(scoreBoth).toBeCloseTo(scoreCreatedOnly, 6);
66
+ });
67
+ });
68
+ describe('decay scoring edge cases: access', () => {
69
+ it('returns 0 when metadata exists but has no access field', () => {
70
+ const node = makeNode({ metadata: { priority: 'P1' } });
71
+ const score = computeAccessScore(node);
72
+ expect(score).toBe(0);
73
+ });
74
+ it('returns 0 when access object exists but has no count field', () => {
75
+ const node = makeNode({ metadata: { access: {} } });
76
+ const score = computeAccessScore(node);
77
+ expect(score).toBe(0);
78
+ });
79
+ it('returns 0 when metadata is undefined', () => {
80
+ const node = makeNode();
81
+ // Ensure no metadata
82
+ delete node.metadata;
83
+ const score = computeAccessScore(node);
84
+ expect(score).toBe(0);
85
+ });
86
+ it('scales logarithmically: 100 accesses gives less than 2x of 10 accesses', () => {
87
+ const node10 = makeNode({ metadata: { access: { count: 10 } } });
88
+ const node100 = makeNode({ metadata: { access: { count: 100 } } });
89
+ const score10 = computeAccessScore(node10);
90
+ const score100 = computeAccessScore(node100);
91
+ expect(score100).toBeGreaterThan(score10);
92
+ expect(score100).toBeLessThan(2 * score10);
93
+ });
94
+ });
95
+ describe('decay scoring edge cases: importance', () => {
96
+ it('returns default importance when metadata has empty priority string', () => {
97
+ const node = makeNode({ metadata: { priority: '' } });
98
+ const score = computeImportanceScore(node);
99
+ // Empty string is not in IMPORTANCE_BY_PRIORITY, falls to default
100
+ expect(score).toBe(1);
101
+ });
102
+ it('returns default importance for numeric priority values', () => {
103
+ const node = makeNode({ metadata: { priority: '0' } });
104
+ const score = computeImportanceScore(node);
105
+ expect(score).toBe(1);
106
+ });
107
+ });
108
+ describe('decay scoring edge cases: computeDecayScore', () => {
109
+ it('uses default options when none provided', () => {
110
+ const node = makeNode({
111
+ created_at: new Date().toISOString(),
112
+ metadata: { priority: 'P2' },
113
+ });
114
+ // Should not throw; uses Date.now() and DEFAULT_HALF_LIFE_MS internally
115
+ const score = computeDecayScore(node);
116
+ expect(score).toBeGreaterThan(0);
117
+ expect(score).toBeLessThanOrEqual(2);
118
+ });
119
+ it('P0 node always scores higher than P3 node with same age and access', () => {
120
+ const now = Date.now();
121
+ const ts = new Date(now - DEFAULT_HALF_LIFE_MS).toISOString();
122
+ const nodeP0 = makeNode({ created_at: ts, metadata: { priority: 'P0' } });
123
+ const nodeP3 = makeNode({ created_at: ts, metadata: { priority: 'P3' } });
124
+ const scoreP0 = computeDecayScore(nodeP0, { now });
125
+ const scoreP3 = computeDecayScore(nodeP3, { now });
126
+ expect(scoreP0).toBeGreaterThan(scoreP3);
127
+ // P0 importance is 4x P3 importance
128
+ expect(scoreP0 / scoreP3).toBeCloseTo(4, 3);
129
+ });
130
+ it('recent node scores higher than old node with same priority', () => {
131
+ const now = Date.now();
132
+ const recent = makeNode({
133
+ created_at: new Date(now).toISOString(),
134
+ metadata: { priority: 'P2' },
135
+ });
136
+ const old = makeNode({
137
+ created_at: new Date(now - 3 * DEFAULT_HALF_LIFE_MS).toISOString(),
138
+ metadata: { priority: 'P2' },
139
+ });
140
+ const scoreRecent = computeDecayScore(recent, { now });
141
+ const scoreOld = computeDecayScore(old, { now });
142
+ expect(scoreRecent).toBeGreaterThan(scoreOld);
143
+ });
144
+ it('access count can partially compensate for age', () => {
145
+ const now = Date.now();
146
+ // Slightly older node with high access
147
+ const olderAccessed = makeNode({
148
+ created_at: new Date(now - 0.5 * DEFAULT_HALF_LIFE_MS).toISOString(),
149
+ metadata: { priority: 'P2', access: { count: 1000 } },
150
+ });
151
+ // Slightly newer node with no access
152
+ const newerUnaccessed = makeNode({
153
+ created_at: new Date(now - 0.3 * DEFAULT_HALF_LIFE_MS).toISOString(),
154
+ metadata: { priority: 'P2' },
155
+ });
156
+ const scoreOlder = computeDecayScore(olderAccessed, { now });
157
+ const scoreNewer = computeDecayScore(newerUnaccessed, { now });
158
+ // The accessed older node should score higher due to access boost
159
+ expect(scoreOlder).toBeGreaterThan(scoreNewer);
160
+ });
161
+ it('score approaches zero for extremely old low-priority nodes', () => {
162
+ const now = Date.now();
163
+ const veryOld = makeNode({
164
+ created_at: new Date(now - 20 * DEFAULT_HALF_LIFE_MS).toISOString(),
165
+ metadata: { priority: 'P3' },
166
+ });
167
+ const score = computeDecayScore(veryOld, { now });
168
+ // exp(-20) * 0.5 ~= 1.03e-9
169
+ expect(score).toBeLessThan(0.000001);
170
+ });
171
+ });
172
+ //# sourceMappingURL=decay-scoring-edges.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decay-scoring-edges.test.js","sourceRoot":"","sources":["../../src/__tests__/decay-scoring-edges.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Signal queuing tests: create, load, filter, mark-read lifecycle.
5
+ *
6
+ * Tests the full signal lifecycle:
7
+ * - createSignal validation and persistence
8
+ * - loadSignals filtering by WU, lane, unread, since
9
+ * - markSignalsAsRead receipt-based read tracking
10
+ * - Error handling for invalid inputs
11
+ */
12
+ import { afterEach, describe, expect, it } from 'vitest';
13
+ import fs from 'node:fs/promises';
14
+ import os from 'node:os';
15
+ import path from 'node:path';
16
+ import { createSignal, loadSignals, markSignalsAsRead } from '../mem-signal-core.js';
17
+ describe('signal queuing lifecycle', () => {
18
+ const tempRoots = [];
19
+ afterEach(async () => {
20
+ await Promise.all(tempRoots.map((root) => fs.rm(root, { recursive: true, force: true })));
21
+ tempRoots.length = 0;
22
+ });
23
+ async function makeTempDir() {
24
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), 'signal-queue-'));
25
+ tempRoots.push(dir);
26
+ return dir;
27
+ }
28
+ describe('createSignal', () => {
29
+ it('creates a signal with unique ID and persists it', async () => {
30
+ const baseDir = await makeTempDir();
31
+ const result = await createSignal(baseDir, {
32
+ message: 'test signal',
33
+ wuId: 'WU-100',
34
+ lane: 'Operations',
35
+ });
36
+ expect(result.success).toBe(true);
37
+ expect(result.signal.id).toMatch(/^sig-[a-f0-9]{8}$/);
38
+ expect(result.signal.message).toBe('test signal');
39
+ expect(result.signal.wu_id).toBe('WU-100');
40
+ expect(result.signal.lane).toBe('Operations');
41
+ expect(result.signal.read).toBe(false);
42
+ });
43
+ it('sets default type, sender, and origin when not provided', async () => {
44
+ const baseDir = await makeTempDir();
45
+ const result = await createSignal(baseDir, { message: 'defaults test' });
46
+ expect(result.signal.type).toBe('coordination');
47
+ expect(result.signal.sender).toBe('system');
48
+ expect(result.signal.origin).toBe('local');
49
+ });
50
+ it('throws on empty message', async () => {
51
+ const baseDir = await makeTempDir();
52
+ await expect(createSignal(baseDir, { message: '' })).rejects.toThrow('message is required');
53
+ });
54
+ it('throws on whitespace-only message', async () => {
55
+ const baseDir = await makeTempDir();
56
+ await expect(createSignal(baseDir, { message: ' ' })).rejects.toThrow('message is required');
57
+ });
58
+ it('throws on invalid WU ID format', async () => {
59
+ const baseDir = await makeTempDir();
60
+ await expect(createSignal(baseDir, { message: 'test', wuId: 'invalid' })).rejects.toThrow('Invalid WU ID');
61
+ });
62
+ it('throws on empty optional string fields', async () => {
63
+ const baseDir = await makeTempDir();
64
+ await expect(createSignal(baseDir, { message: 'test', type: ' ' })).rejects.toThrow();
65
+ });
66
+ });
67
+ describe('loadSignals', () => {
68
+ it('returns empty array when no signals file exists', async () => {
69
+ const baseDir = await makeTempDir();
70
+ const signals = await loadSignals(baseDir);
71
+ expect(signals).toEqual([]);
72
+ });
73
+ it('loads all signals in chronological order', async () => {
74
+ const baseDir = await makeTempDir();
75
+ await createSignal(baseDir, { message: 'first' });
76
+ await createSignal(baseDir, { message: 'second' });
77
+ await createSignal(baseDir, { message: 'third' });
78
+ const signals = await loadSignals(baseDir);
79
+ expect(signals).toHaveLength(3);
80
+ expect(signals[0]?.message).toBe('first');
81
+ expect(signals[1]?.message).toBe('second');
82
+ expect(signals[2]?.message).toBe('third');
83
+ });
84
+ it('filters by WU ID', async () => {
85
+ const baseDir = await makeTempDir();
86
+ await createSignal(baseDir, { message: 'for WU-1', wuId: 'WU-1' });
87
+ await createSignal(baseDir, { message: 'for WU-2', wuId: 'WU-2' });
88
+ await createSignal(baseDir, { message: 'no WU' });
89
+ const signals = await loadSignals(baseDir, { wuId: 'WU-1' });
90
+ expect(signals).toHaveLength(1);
91
+ expect(signals[0]?.message).toBe('for WU-1');
92
+ });
93
+ it('filters by lane', async () => {
94
+ const baseDir = await makeTempDir();
95
+ await createSignal(baseDir, { message: 'ops signal', lane: 'Operations' });
96
+ await createSignal(baseDir, { message: 'dev signal', lane: 'Development' });
97
+ const signals = await loadSignals(baseDir, { lane: 'Operations' });
98
+ expect(signals).toHaveLength(1);
99
+ expect(signals[0]?.message).toBe('ops signal');
100
+ });
101
+ it('filters unread only', async () => {
102
+ const baseDir = await makeTempDir();
103
+ const result1 = await createSignal(baseDir, { message: 'will be read' });
104
+ await createSignal(baseDir, { message: 'stays unread' });
105
+ await markSignalsAsRead(baseDir, [result1.signal.id]);
106
+ const unread = await loadSignals(baseDir, { unreadOnly: true });
107
+ expect(unread).toHaveLength(1);
108
+ expect(unread[0]?.message).toBe('stays unread');
109
+ });
110
+ it('filters by since timestamp', async () => {
111
+ const baseDir = await makeTempDir();
112
+ await createSignal(baseDir, { message: 'old signal' });
113
+ const cutoff = new Date();
114
+ // Small delay to ensure timestamp difference
115
+ await new Promise((resolve) => setTimeout(resolve, 10));
116
+ await createSignal(baseDir, { message: 'new signal' });
117
+ const recent = await loadSignals(baseDir, { since: cutoff });
118
+ expect(recent).toHaveLength(1);
119
+ expect(recent[0]?.message).toBe('new signal');
120
+ });
121
+ });
122
+ describe('markSignalsAsRead', () => {
123
+ it('marks signals as read via receipts', async () => {
124
+ const baseDir = await makeTempDir();
125
+ const result = await createSignal(baseDir, { message: 'to read' });
126
+ const markResult = await markSignalsAsRead(baseDir, [result.signal.id]);
127
+ expect(markResult.markedCount).toBe(1);
128
+ const signals = await loadSignals(baseDir);
129
+ expect(signals[0]?.read).toBe(true);
130
+ });
131
+ it('is idempotent -- marking same signal twice does not double-count', async () => {
132
+ const baseDir = await makeTempDir();
133
+ const result = await createSignal(baseDir, { message: 'to read twice' });
134
+ await markSignalsAsRead(baseDir, [result.signal.id]);
135
+ const secondResult = await markSignalsAsRead(baseDir, [result.signal.id]);
136
+ expect(secondResult.markedCount).toBe(0);
137
+ });
138
+ it('returns 0 when no signals file exists', async () => {
139
+ const baseDir = await makeTempDir();
140
+ const result = await markSignalsAsRead(baseDir, ['sig-nonexist']);
141
+ expect(result.markedCount).toBe(0);
142
+ });
143
+ it('ignores IDs that do not exist in the signals file', async () => {
144
+ const baseDir = await makeTempDir();
145
+ await createSignal(baseDir, { message: 'existing' });
146
+ const result = await markSignalsAsRead(baseDir, ['sig-nonexist']);
147
+ expect(result.markedCount).toBe(0);
148
+ });
149
+ });
150
+ });
151
+ //# sourceMappingURL=signal-queuing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-queuing.test.js","sourceRoot":"","sources":["../../src/__tests__/signal-queuing.test.ts"],"names":[],"mappings":"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"}
@@ -174,7 +174,7 @@ async function loadCompactConstraints(baseDir) {
174
174
  * Loads WU metadata (acceptance criteria, code_paths) from YAML spec (WU-2157)
175
175
  */
176
176
  async function loadWuMetadata(baseDir, wuId) {
177
- const wuYamlPath = path.join(baseDir, 'docs', '04-operations', 'tasks', 'wu', `${wuId}.yaml`);
177
+ const wuYamlPath = path.join(baseDir, 'docs', 'operations', 'tasks', 'wu', `${wuId}.yaml`);
178
178
  try {
179
179
  // eslint-disable-next-line security/detect-non-literal-fs-filename
180
180
  const content = await fs.readFile(wuYamlPath, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"mem-recover-core.js","sourceRoot":"","sources":["../src/mem-recover-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mem-recover-core.js","sourceRoot":"","sources":["../src/mem-recover-core.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenflow/memory",
3
- "version": "3.17.6",
3
+ "version": "3.18.0",
4
4
  "description": "Memory layer for LumenFlow workflow framework - session tracking, context recovery, and agent coordination",
5
5
  "keywords": [
6
6
  "lumenflow",
@@ -56,7 +56,7 @@
56
56
  "ms": "^2.1.3",
57
57
  "yaml": "^2.8.2",
58
58
  "zod": "^4.3.6",
59
- "@lumenflow/core": "3.17.6"
59
+ "@lumenflow/core": "3.18.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@vitest/coverage-v8": "^4.0.18",