@lumenflow/memory 1.0.0 → 1.3.2

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 (42) hide show
  1. package/dist/mem-checkpoint-core.js +1 -1
  2. package/dist/mem-triage-core.js +1 -1
  3. package/package.json +7 -13
  4. package/dist/index.d.ts +0 -16
  5. package/dist/index.d.ts.map +0 -1
  6. package/dist/index.js.map +0 -1
  7. package/dist/mem-checkpoint-core.d.ts +0 -91
  8. package/dist/mem-checkpoint-core.d.ts.map +0 -1
  9. package/dist/mem-checkpoint-core.js.map +0 -1
  10. package/dist/mem-cleanup-core.d.ts +0 -202
  11. package/dist/mem-cleanup-core.d.ts.map +0 -1
  12. package/dist/mem-cleanup-core.js.map +0 -1
  13. package/dist/mem-create-core.d.ts +0 -93
  14. package/dist/mem-create-core.d.ts.map +0 -1
  15. package/dist/mem-create-core.js.map +0 -1
  16. package/dist/mem-id.d.ts +0 -91
  17. package/dist/mem-id.d.ts.map +0 -1
  18. package/dist/mem-id.js.map +0 -1
  19. package/dist/mem-init-core.d.ts +0 -91
  20. package/dist/mem-init-core.d.ts.map +0 -1
  21. package/dist/mem-init-core.js.map +0 -1
  22. package/dist/mem-ready-core.d.ts +0 -56
  23. package/dist/mem-ready-core.d.ts.map +0 -1
  24. package/dist/mem-ready-core.js.map +0 -1
  25. package/dist/mem-signal-core.d.ts +0 -132
  26. package/dist/mem-signal-core.d.ts.map +0 -1
  27. package/dist/mem-signal-core.js.map +0 -1
  28. package/dist/mem-start-core.d.ts +0 -76
  29. package/dist/mem-start-core.d.ts.map +0 -1
  30. package/dist/mem-start-core.js.map +0 -1
  31. package/dist/mem-summarize-core.d.ts +0 -105
  32. package/dist/mem-summarize-core.d.ts.map +0 -1
  33. package/dist/mem-summarize-core.js.map +0 -1
  34. package/dist/mem-triage-core.d.ts +0 -127
  35. package/dist/mem-triage-core.d.ts.map +0 -1
  36. package/dist/mem-triage-core.js.map +0 -1
  37. package/dist/memory-schema.d.ts +0 -150
  38. package/dist/memory-schema.d.ts.map +0 -1
  39. package/dist/memory-schema.js.map +0 -1
  40. package/dist/memory-store.d.ts +0 -108
  41. package/dist/memory-store.d.ts.map +0 -1
  42. package/dist/memory-store.js.map +0 -1
@@ -20,7 +20,7 @@ import path from 'node:path';
20
20
  import { generateMemId } from './mem-id.js';
21
21
  import { appendNode } from './memory-store.js';
22
22
  import { MEMORY_PATTERNS } from './memory-schema.js';
23
- import { WUStateStore } from '@lumenflow/core/dist/wu-state-store.js';
23
+ import { WUStateStore } from '@lumenflow/core/wu-state-store';
24
24
  /**
25
25
  * Memory directory path relative to base directory
26
26
  */
@@ -14,7 +14,7 @@
14
14
  import fs from 'node:fs/promises';
15
15
  import path from 'node:path';
16
16
  import { loadMemory, appendNode } from './memory-store.js';
17
- import { validateLaneFormat } from '@lumenflow/core/dist/lane-checker.js';
17
+ import { validateLaneFormat } from '@lumenflow/core/lane-checker';
18
18
  /**
19
19
  * Memory directory path relative to base
20
20
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenflow/memory",
3
- "version": "1.0.0",
3
+ "version": "1.3.2",
4
4
  "description": "Memory layer for LumenFlow workflow framework - session tracking, context recovery, and agent coordination",
5
5
  "keywords": [
6
6
  "lumenflow",
@@ -45,20 +45,14 @@
45
45
  ],
46
46
  "dependencies": {
47
47
  "ms": "^2.1.3",
48
- "yaml": "^2.8.0",
49
- "zod": "^4.3.5"
48
+ "yaml": "^2.8.2",
49
+ "zod": "^4.3.5",
50
+ "@lumenflow/core": "1.3.2"
50
51
  },
51
52
  "devDependencies": {
52
- "typescript": "^5.7.0",
53
- "vitest": "^2.1.0"
54
- },
55
- "peerDependencies": {
56
- "@lumenflow/core": "1.0.0"
57
- },
58
- "peerDependenciesMeta": {
59
- "@lumenflow/core": {
60
- "optional": true
61
- }
53
+ "@vitest/coverage-v8": "^4.0.17",
54
+ "typescript": "^5.9.3",
55
+ "vitest": "^4.0.17"
62
56
  },
63
57
  "engines": {
64
58
  "node": ">=22"
package/dist/index.d.ts DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * @lumenflow/memory - Session tracking and context recovery
3
- * @module @lumenflow/memory
4
- */
5
- export * from './mem-checkpoint-core.js';
6
- export * from './mem-cleanup-core.js';
7
- export * from './mem-create-core.js';
8
- export * from './mem-id.js';
9
- export * from './mem-init-core.js';
10
- export * from './mem-ready-core.js';
11
- export * from './mem-signal-core.js';
12
- export * from './mem-start-core.js';
13
- export { filterSummarizableNodes, summarizeWu, getCompactionRatio as getSummarizeCompactionRatio, } from './mem-summarize-core.js';
14
- export * from './mem-triage-core.js';
15
- export * from './memory-schema.js';
16
- export * from './memory-store.js';
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -1,91 +0,0 @@
1
- /**
2
- * Memory Checkpoint Core (WU-1467, WU-1748)
3
- *
4
- * Core logic for creating checkpoint nodes for context snapshots.
5
- * Used before /clear or session handoff to preserve progress state.
6
- *
7
- * Features:
8
- * - Creates checkpoint nodes with progress summary and next steps
9
- * - Optional linking to sessions and WUs
10
- * - Supports handoff trigger detection
11
- * - Auto-initializes memory layer if not present
12
- * - WU-1748: Persists to wu-events.jsonl for cross-agent visibility
13
- *
14
- * @see {@link tools/mem-checkpoint.mjs} - CLI wrapper
15
- * @see {@link tools/__tests__/mem-checkpoint.test.mjs} - Tests
16
- * @see {@link tools/lib/memory-schema.mjs} - Schema definitions
17
- */
18
- /**
19
- * Checkpoint creation options
20
- */
21
- export interface CreateCheckpointOptions {
22
- /** Checkpoint note/description (required) */
23
- note: string;
24
- /** Session ID to link checkpoint to */
25
- sessionId?: string;
26
- /** Work Unit ID to link checkpoint to */
27
- wuId?: string;
28
- /** Progress summary */
29
- progress?: string;
30
- /** Next steps description */
31
- nextSteps?: string;
32
- /** Handoff trigger (e.g., 'clear', 'handoff') */
33
- trigger?: string;
34
- }
35
- /**
36
- * Checkpoint metadata stored in the node
37
- */
38
- interface CheckpointMetadata {
39
- progress?: string;
40
- nextSteps?: string;
41
- trigger?: string;
42
- [key: string]: unknown;
43
- }
44
- /**
45
- * Memory node structure for checkpoints
46
- */
47
- interface CheckpointNode {
48
- id: string;
49
- type: 'checkpoint';
50
- lifecycle: 'session';
51
- content: string;
52
- created_at: string;
53
- wu_id?: string;
54
- session_id?: string;
55
- metadata?: CheckpointMetadata;
56
- }
57
- /**
58
- * Checkpoint creation result
59
- */
60
- export interface CreateCheckpointResult {
61
- /** Whether the operation succeeded */
62
- success: boolean;
63
- /** Created checkpoint node */
64
- checkpoint: CheckpointNode;
65
- }
66
- /**
67
- * Creates a new checkpoint node for context preservation.
68
- *
69
- * Creates a checkpoint-type memory node with:
70
- * - Unique ID (mem-XXXX format)
71
- * - User-provided note in content
72
- * - Optional session and WU linking
73
- * - Progress summary and next steps in metadata
74
- *
75
- * @param baseDir - Base directory containing .beacon/memory/
76
- * @param options - Checkpoint options
77
- * @returns Result with created checkpoint node
78
- * @throws If note is missing or WU ID is invalid
79
- *
80
- * @example
81
- * const result = await createCheckpoint(baseDir, {
82
- * note: 'Before /clear - completed TDD tests',
83
- * sessionId: 'session-uuid',
84
- * wuId: 'WU-1467',
85
- * progress: 'TDD tests passing, core module implemented',
86
- * nextSteps: 'Implement CLI wrapper, add package.json script',
87
- * });
88
- * console.log(result.checkpoint.id); // 'mem-a1b2'
89
- */
90
- export declare function createCheckpoint(baseDir: string, options: CreateCheckpointOptions): Promise<CreateCheckpointResult>;
91
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-checkpoint-core.d.ts","sourceRoot":"","sources":["../src/mem-checkpoint-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAwEH;;;;;;;;;;GAUG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,KAAA,EAAE,OAAO,KAAA;;;;;;;;;GAmFtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-checkpoint-core.js","sourceRoot":"","sources":["../src/mem-checkpoint-core.ts"],"names":[],"mappings":"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"}
@@ -1,202 +0,0 @@
1
- /**
2
- * Memory Cleanup Core (WU-1472, WU-1554)
3
- *
4
- * Prune closed memory nodes based on lifecycle policy.
5
- * Implements compaction to prevent memory bloat.
6
- *
7
- * Features:
8
- * - Remove ephemeral nodes (always discarded)
9
- * - Remove session nodes when session is closed
10
- * - Archive summarized nodes (marked with summarized_into)
11
- * - Respect sensitive:true flag for stricter retention
12
- * - Support dry-run mode for preview
13
- * - Report compaction metrics (ratio, bytes freed)
14
- * - WU-1554: TTL-based expiration for old nodes
15
- * - WU-1554: Active session protection regardless of age
16
- *
17
- * Lifecycle Policy:
18
- * - ephemeral: Always removed (scratch pad data)
19
- * - session: Removed when session is closed
20
- * - wu: Removed when marked with summarized_into (after WU completion)
21
- * - project: Never removed (architectural knowledge)
22
- *
23
- * TTL Policy (WU-1554):
24
- * - Nodes older than TTL are removed regardless of lifecycle
25
- * - Active sessions (status: 'active') are never removed
26
- * - Project and sensitive nodes are protected from TTL removal
27
- *
28
- * @see {@link tools/mem-cleanup.mjs} - CLI wrapper
29
- * @see {@link tools/__tests__/mem-cleanup.test.mjs} - Tests
30
- */
31
- import type { MemoryNode } from './memory-schema.js';
32
- /**
33
- * Lifecycle policy definition
34
- */
35
- interface LifecyclePolicyEntry {
36
- alwaysRemove: boolean;
37
- requiresSummarized: boolean;
38
- protected?: boolean;
39
- }
40
- /**
41
- * Lifecycle policy type for indexed access
42
- */
43
- type LifecycleType = 'ephemeral' | 'session' | 'wu' | 'project';
44
- /**
45
- * Lifecycle policy definitions
46
- *
47
- * Determines which nodes are eligible for cleanup based on lifecycle.
48
- */
49
- export declare const LIFECYCLE_POLICY: Record<LifecycleType, LifecyclePolicyEntry>;
50
- /**
51
- * Metadata flag that indicates sensitive data requiring stricter retention
52
- */
53
- export declare const SENSITIVE_FLAG = "sensitive";
54
- /**
55
- * Cleanup options for memory pruning
56
- */
57
- export interface CleanupOptions {
58
- /** If true, preview without modifications */
59
- dryRun?: boolean;
60
- /** Session ID to consider closed (removes session lifecycle nodes) */
61
- sessionId?: string;
62
- /** TTL duration string (e.g., '30d', '7d', '24h') for age-based cleanup */
63
- ttl?: string;
64
- /** TTL in milliseconds (alternative to ttl string) */
65
- ttlMs?: number;
66
- /** Current timestamp for testing (defaults to Date.now()) */
67
- now?: number;
68
- }
69
- /**
70
- * Breakdown of cleanup by lifecycle type
71
- */
72
- interface CleanupBreakdown {
73
- ephemeral: number;
74
- session: number;
75
- wu: number;
76
- sensitive: number;
77
- ttlExpired: number;
78
- activeSessionProtected: number;
79
- }
80
- /**
81
- * Result of cleanup operation
82
- */
83
- export interface CleanupResult {
84
- /** Whether cleanup succeeded */
85
- success: boolean;
86
- /** IDs of removed nodes */
87
- removedIds: string[];
88
- /** IDs of retained nodes */
89
- retainedIds: string[];
90
- /** Approximate bytes freed (0 if dry-run) */
91
- bytesFreed: number;
92
- /** Ratio of removed to total nodes */
93
- compactionRatio: number;
94
- /** True if in dry-run mode */
95
- dryRun?: boolean;
96
- /** TTL in milliseconds if TTL was provided */
97
- ttlMs?: number;
98
- /** Breakdown by lifecycle */
99
- breakdown: CleanupBreakdown;
100
- }
101
- /**
102
- * Parse a TTL duration string into milliseconds (WU-1554).
103
- *
104
- * Uses the `ms` package to parse human-readable duration strings.
105
- *
106
- * @param ttlString - TTL string (e.g., '30d', '7d', '24h', '60m')
107
- * @returns TTL in milliseconds
108
- * @throws If TTL format is invalid
109
- *
110
- * @example
111
- * parseTtl('30d'); // 2592000000 (30 days in ms)
112
- * parseTtl('7d'); // 604800000 (7 days in ms)
113
- * parseTtl('24h'); // 86400000 (24 hours in ms)
114
- */
115
- export declare function parseTtl(ttlString: string): number;
116
- /**
117
- * Check if a node has expired based on TTL (WU-1554).
118
- *
119
- * @param node - Memory node to check
120
- * @param ttlMs - TTL in milliseconds
121
- * @param now - Current timestamp (defaults to Date.now())
122
- * @returns True if node is older than TTL
123
- *
124
- * @example
125
- * // Check if node is older than 30 days
126
- * const expired = isNodeExpired(node, 30 * 24 * 60 * 60 * 1000);
127
- */
128
- export declare function isNodeExpired(node: MemoryNode, ttlMs: number, now?: number): boolean;
129
- /**
130
- * Check if a node should be removed based on lifecycle policy and TTL.
131
- *
132
- * Policy rules (checked in order):
133
- * 1. Active sessions are always retained (WU-1554)
134
- * 2. Sensitive nodes are always retained
135
- * 3. Protected lifecycle (project) nodes are never removed
136
- * 4. TTL expiration removes old nodes (WU-1554)
137
- * 5. Ephemeral nodes are always removed
138
- * 6. Session nodes are removed when their session is closed
139
- * 7. WU nodes are removed only when marked with summarized_into
140
- *
141
- * @param {MemoryNode} node - Memory node to check
142
- * @param {CleanupOptions} options - Cleanup options
143
- * @returns {{remove: boolean, reason: string}} Removal decision with reason
144
- */
145
- export declare function shouldRemoveNode(node: MemoryNode, options?: CleanupOptions): {
146
- remove: boolean;
147
- reason: string;
148
- };
149
- /**
150
- * Calculate approximate byte size of a node when serialized.
151
- *
152
- * @param node - Memory node
153
- * @returns Approximate byte size
154
- */
155
- export declare function estimateNodeBytes(node: MemoryNode): number;
156
- /**
157
- * Calculate compaction ratio (removed / total).
158
- *
159
- * @param removedCount - Number of removed nodes
160
- * @param totalCount - Total number of nodes
161
- * @returns Compaction ratio (0 to 1, or 0 if no nodes)
162
- */
163
- export declare function getCompactionRatio(removedCount: number, totalCount: number): number;
164
- /**
165
- * Perform memory cleanup based on lifecycle policy and TTL.
166
- *
167
- * Removes nodes according to lifecycle policy:
168
- * - Active sessions are never removed (WU-1554)
169
- * - Sensitive nodes are always retained
170
- * - Project nodes are never removed
171
- * - TTL-expired nodes are removed (WU-1554)
172
- * - Ephemeral nodes are always removed
173
- * - Session nodes are removed when their session is closed
174
- * - WU nodes are removed only when marked with summarized_into
175
- *
176
- * In dry-run mode, no modifications are made but the result shows
177
- * what would be removed.
178
- *
179
- * @param {string} baseDir - Base directory containing .beacon/memory/
180
- * @param {CleanupOptions} options - Cleanup options
181
- * @returns {Promise<CleanupResult>} Result with removed nodes and metrics
182
- *
183
- * @example
184
- * // Cleanup with dry-run to preview
185
- * const preview = await cleanupMemory(baseDir, { dryRun: true });
186
- * console.log(`Would remove ${preview.removedIds.length} nodes`);
187
- * console.log(`Would free ${preview.bytesFreed} bytes`);
188
- *
189
- * @example
190
- * // Cleanup session nodes when session closes
191
- * const result = await cleanupMemory(baseDir, {
192
- * sessionId: 'abc-123-def-456',
193
- * });
194
- * console.log(`Removed ${result.removedIds.length} nodes`);
195
- *
196
- * @example
197
- * // WU-1554: TTL-based cleanup
198
- * const result = await cleanupMemory(baseDir, { ttl: '30d' });
199
- * console.log(`Removed ${result.breakdown.ttlExpired} expired nodes`);
200
- */
201
- export declare function cleanupMemory(baseDir: string, options?: CleanupOptions): Promise<CleanupResult>;
202
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-cleanup-core.d.ts","sourceRoot":"","sources":["../src/mem-cleanup-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAYH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;IAC3B,4DAA4D;;;;;IAG5D,mDAAmD;;;;;IAGnD,wDAAwD;;;;;IAGxD,gEAAgE;;;;;;CAEjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAO1C;;GAEG;AAEH;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,SAAS,KAAA,OAkBjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,KAAA,EAAE,KAAK,KAAA,EAAE,GAAG,SAAa,WAc1D;AAgDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,KAAA,EAAE,OAAO,KAAK;;;EA+ClD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,UAGrC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,KAAA,EAAE,UAAU,KAAA,UAK1D;AAyCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,aAAa,CAAC,OAAO,KAAA,EAAE,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoExD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-cleanup-core.js","sourceRoot":"","sources":["../src/mem-cleanup-core.ts"],"names":[],"mappings":"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"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Memory Create Core (WU-1469)
3
- *
4
- * Core logic for creating memory nodes with discovered-from provenance.
5
- * KEY DIFFERENTIATOR: supports discovered-from relationship for scope-creep
6
- * forensics. Creates audit trail of WHY work expanded, not just WHAT changed.
7
- *
8
- * Features:
9
- * - Creates all 5 node types: session, discovery, checkpoint, note, summary
10
- * - Auto-generates hash-based ID using mem-id
11
- * - Validates node against memory-schema
12
- * - Supports discovered-from relationship for provenance tracking
13
- *
14
- * @see {@link tools/mem-create.mjs} - CLI wrapper
15
- * @see {@link tools/__tests__/mem-create.test.mjs} - Tests
16
- * @see {@link tools/lib/memory-schema.mjs} - Schema definitions
17
- */
18
- import { type MemoryNode } from './memory-schema.js';
19
- /**
20
- * Memory node creation options
21
- */
22
- export interface CreateMemoryNodeOptions {
23
- /** Node title/content (required) */
24
- title: string;
25
- /** Node type (session, discovery, checkpoint, note, summary) */
26
- type?: string;
27
- /** Work Unit ID to link node to */
28
- wuId?: string;
29
- /** Session ID to link node to */
30
- sessionId?: string;
31
- /** Parent node ID for provenance tracking */
32
- discoveredFrom?: string;
33
- /** Tags for categorization */
34
- tags?: string[];
35
- /** Priority level (P0, P1, P2, P3) */
36
- priority?: string;
37
- }
38
- /**
39
- * Relationship between memory nodes
40
- */
41
- interface Relationship {
42
- from_id: string;
43
- to_id: string;
44
- type: string;
45
- created_at: string;
46
- }
47
- /**
48
- * Memory node creation result
49
- */
50
- export interface CreateMemoryNodeResult {
51
- /** Whether the operation succeeded */
52
- success: boolean;
53
- /** Created memory node */
54
- node: MemoryNode;
55
- /** Created relationship (if discoveredFrom provided) */
56
- relationship?: Relationship;
57
- }
58
- /**
59
- * Creates a new memory node with optional discovered-from provenance.
60
- *
61
- * Creates a memory node with:
62
- * - Unique ID (mem-XXXX format) generated from content hash
63
- * - User-provided title as content
64
- * - Type-appropriate lifecycle
65
- * - Optional discovered-from relationship for provenance tracking
66
- *
67
- * @param {string} baseDir - Base directory containing .beacon/memory/
68
- * @param {CreateMemoryNodeOptions} options - Node creation options
69
- * @returns {Promise<CreateMemoryNodeResult>} Result with created node and optional relationship
70
- * @throws {Error} If title is missing, type is invalid, or IDs are malformed
71
- *
72
- * @example
73
- * // Create a simple discovery node
74
- * const result = await createMemoryNode(baseDir, {
75
- * title: 'Found relevant file at src/utils.mjs',
76
- * type: 'discovery',
77
- * wuId: 'WU-1469',
78
- * });
79
- *
80
- * @example
81
- * // Create a node with provenance (scope-creep tracking)
82
- * const parent = await createMemoryNode(baseDir, {
83
- * title: 'Found src/components/',
84
- * type: 'discovery',
85
- * });
86
- * const child = await createMemoryNode(baseDir, {
87
- * title: 'Found src/components/Button.tsx',
88
- * type: 'discovery',
89
- * discoveredFrom: parent.node.id, // Track where this came from
90
- * });
91
- */
92
- export declare function createMemoryNode(baseDir: string, options: CreateMemoryNodeOptions): Promise<CreateMemoryNodeResult>;
93
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-create-core.d.ts","sourceRoot":"","sources":["../src/mem-create-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAwPH;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,KAAA,EAAE,OAAO,KAAA;;;;;;;;;GA8HtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-create-core.js","sourceRoot":"","sources":["../src/mem-create-core.ts"],"names":[],"mappings":"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"}
package/dist/mem-id.d.ts DELETED
@@ -1,91 +0,0 @@
1
- /**
2
- * Memory ID Generator (WU-1465)
3
- *
4
- * Hash-based collision-free ID generation for memory nodes.
5
- * Format: mem-[4 hex chars] derived from content hash.
6
- * Supports hierarchical IDs (mem-a1b2.1.2) for sub-task decomposition.
7
- *
8
- * @see {@link tools/lib/__tests__/mem-id.test.mjs} - Tests
9
- * @see {@link tools/lib/memory-schema.mjs} - Schema definitions
10
- */
11
- /**
12
- * Regex patterns for memory ID validation
13
- */
14
- export declare const MEM_ID_PATTERNS: {
15
- /**
16
- * Base memory ID format: mem-[a-f0-9]{4}
17
- * Only lowercase hex characters (0-9, a-f)
18
- */
19
- BASE_ID: RegExp;
20
- /**
21
- * Hierarchical memory ID format: mem-[a-f0-9]{4}(.[1-9][0-9]*)*
22
- * Base ID followed by optional dot-separated positive integers
23
- * Examples: mem-a1b2, mem-a1b2.1, mem-a1b2.1.2
24
- */
25
- HIERARCHICAL_ID: RegExp;
26
- };
27
- /**
28
- * Generates a deterministic memory ID from content.
29
- *
30
- * Uses SHA-256 hash of the content, taking the first 4 hex characters.
31
- * Same content always produces the same ID (deterministic).
32
- *
33
- * @param content - Content to hash for ID generation
34
- * @returns Memory ID in format mem-[a-f0-9]{4}
35
- *
36
- * @example
37
- * const id = generateMemId('discovered file at src/utils.mjs');
38
- * // Returns something like 'mem-a3f2'
39
- */
40
- export declare function generateMemId(content: string): string;
41
- /**
42
- * Generates a hierarchical memory ID by appending an index to a parent ID.
43
- *
44
- * Used for sub-task decomposition where a parent task (mem-a1b2) has
45
- * child tasks (mem-a1b2.1, mem-a1b2.2) and grandchildren (mem-a1b2.1.1).
46
- *
47
- * @param parentId - Parent memory ID (base or hierarchical)
48
- * @param index - Positive integer index (1-based)
49
- * @returns Hierarchical memory ID
50
- * @throws If parentId is invalid or index is not positive
51
- *
52
- * @example
53
- * generateHierarchicalId('mem-a1b2', 1); // 'mem-a1b2.1'
54
- * generateHierarchicalId('mem-a1b2.1', 2); // 'mem-a1b2.1.2'
55
- */
56
- export declare function generateHierarchicalId(parentId: string, index: number): string;
57
- /**
58
- * Validation result from validateMemId
59
- */
60
- export interface MemIdValidationResult {
61
- /** Whether the ID is valid */
62
- valid: boolean;
63
- /** Type of ID if valid */
64
- type?: 'base' | 'hierarchical';
65
- /** Base ID portion if hierarchical */
66
- baseId?: string;
67
- /** Hierarchical indices (empty for base IDs) */
68
- indices: number[];
69
- /** Error message if invalid */
70
- error?: string;
71
- }
72
- /**
73
- * Validates a memory ID and extracts its components.
74
- *
75
- * Returns validation result with type classification and parsed components.
76
- * Compatible with MEMORY_PATTERNS.MEMORY_ID from memory-schema.mjs.
77
- *
78
- * @param id - Memory ID to validate
79
- * @returns Validation result with parsed components
80
- *
81
- * @example
82
- * validateMemId('mem-a1b2');
83
- * // { valid: true, type: 'base', baseId: 'mem-a1b2', indices: [] }
84
- *
85
- * validateMemId('mem-a1b2.1.2');
86
- * // { valid: true, type: 'hierarchical', baseId: 'mem-a1b2', indices: [1, 2] }
87
- *
88
- * validateMemId('invalid');
89
- * // { valid: false, error: 'Invalid memory ID format', indices: [] }
90
- */
91
- export declare function validateMemId(id: string): MemIdValidationResult;
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-id.d.ts","sourceRoot":"","sources":["../src/mem-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B;;;OAGG;;IAGH;;;;OAIG;;CAEJ,CAAC;AAWF;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,KAAA,UAOpC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,UAYrD;AAED;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAA;;;;;;;;;;;;EA+B/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mem-id.js","sourceRoot":"","sources":["../src/mem-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B;;GAEG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,OAAO,EAAE,mBAAmB;IAE5B;;;;OAIG;IACH,eAAe,EAAE,mCAAmC;CACrD,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,UAAU,EAAE,0BAA0B;IACtC,eAAe,EAAE,+BAA+B;IAChD,aAAa,EAAE,kCAAkC;CAClD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,OAAO;IACnC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzE,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAEhD,OAAO,GAAG,aAAa,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAQ,EAAE,KAAK;IACpD,qBAAqB;IACrB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,cAAc,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,cAAc,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE;IAC9B,+BAA+B;IAC/B,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,cAAc,CAAC,UAAU;YAChC,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjE,OAAO;QACL,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,cAAc;QACpB,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC"}