@miller-tech/uap 1.5.4 → 1.5.6
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.
- package/dist/.tsbuildinfo +1 -0
- package/dist/bin/cli.js +6 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/llama-server-optimize.js +0 -0
- package/dist/bin/policy.js +0 -0
- package/dist/bin/tool-calls.js +0 -0
- package/dist/cli/dashboard.d.ts +1 -0
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/memory/active-context.d.ts +65 -0
- package/dist/memory/active-context.d.ts.map +1 -0
- package/dist/memory/active-context.js +126 -0
- package/dist/memory/active-context.js.map +1 -0
- package/dist/memory/dedup-detector.d.ts +57 -0
- package/dist/memory/dedup-detector.d.ts.map +1 -0
- package/dist/memory/dedup-detector.js +107 -0
- package/dist/memory/dedup-detector.js.map +1 -0
- package/dist/memory/dedup-memory.d.ts +89 -0
- package/dist/memory/dedup-memory.d.ts.map +1 -0
- package/dist/memory/dedup-memory.js +173 -0
- package/dist/memory/dedup-memory.js.map +1 -0
- package/dist/memory/merge-claude-md.d.ts +45 -0
- package/dist/memory/merge-claude-md.d.ts.map +1 -0
- package/dist/memory/merge-claude-md.js +118 -0
- package/dist/memory/merge-claude-md.js.map +1 -0
- package/dist/memory/patterns.d.ts +37 -0
- package/dist/memory/patterns.d.ts.map +1 -0
- package/dist/memory/patterns.js +81 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/semantic-edge-graph.d.ts +86 -0
- package/dist/memory/semantic-edge-graph.d.ts.map +1 -0
- package/dist/memory/semantic-edge-graph.js +168 -0
- package/dist/memory/semantic-edge-graph.js.map +1 -0
- package/dist/memory/semantic-retrieval.d.ts +70 -0
- package/dist/memory/semantic-retrieval.d.ts.map +1 -0
- package/dist/memory/semantic-retrieval.js +112 -0
- package/dist/memory/semantic-retrieval.js.map +1 -0
- package/dist/memory/smart-consolidator.d.ts +53 -0
- package/dist/memory/smart-consolidator.d.ts.map +1 -0
- package/dist/memory/smart-consolidator.js +144 -0
- package/dist/memory/smart-consolidator.js.map +1 -0
- package/dist/memory/view-memory.d.ts +80 -0
- package/dist/memory/view-memory.d.ts.map +1 -0
- package/dist/memory/view-memory.js +130 -0
- package/dist/memory/view-memory.js.map +1 -0
- package/dist/memory/wrapped-memory.d.ts +77 -0
- package/dist/memory/wrapped-memory.d.ts.map +1 -0
- package/dist/memory/wrapped-memory.js +127 -0
- package/dist/memory/wrapped-memory.js.map +1 -0
- package/dist/telemetry/session-telemetry.d.ts +5 -0
- package/dist/telemetry/session-telemetry.d.ts.map +1 -1
- package/dist/telemetry/session-telemetry.js +243 -0
- package/dist/telemetry/session-telemetry.js.map +1 -1
- package/dist/utils/adaptive-cache.d.ts +67 -0
- package/dist/utils/adaptive-cache.d.ts.map +1 -0
- package/dist/utils/adaptive-cache.js +149 -0
- package/dist/utils/adaptive-cache.js.map +1 -0
- package/dist/utils/concurrency.d.ts +33 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +88 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/file-discovery.d.ts +38 -0
- package/dist/utils/file-discovery.d.ts.map +1 -0
- package/dist/utils/file-discovery.js +100 -0
- package/dist/utils/file-discovery.js.map +1 -0
- package/dist/utils/performance-monitor.d.ts +52 -0
- package/dist/utils/performance-monitor.d.ts.map +1 -0
- package/dist/utils/performance-monitor.js +103 -0
- package/dist/utils/performance-monitor.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Retrieval Module for UAP
|
|
3
|
+
*
|
|
4
|
+
* Implements semantic search over memory entries using embeddings.
|
|
5
|
+
*/
|
|
6
|
+
import { getEmbeddingService } from './embeddings.js';
|
|
7
|
+
const DEFAULT_CONFIG = {
|
|
8
|
+
minScore: 0.5,
|
|
9
|
+
topK: 10,
|
|
10
|
+
embeddingModel: 'default',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Semantic Retrieval Manager
|
|
14
|
+
* Provides semantic search capabilities for memory entries
|
|
15
|
+
*/
|
|
16
|
+
export class SemanticRetrieval {
|
|
17
|
+
config;
|
|
18
|
+
memoryIndex = new Map();
|
|
19
|
+
embeddingService = getEmbeddingService();
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Index a memory entry
|
|
25
|
+
*/
|
|
26
|
+
async addEntry(entry) {
|
|
27
|
+
// Generate embedding if not provided
|
|
28
|
+
if (!entry.embedding) {
|
|
29
|
+
try {
|
|
30
|
+
entry.embedding = await this.embeddingService.embed(entry.content);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.warn('Failed to embed content:', error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.memoryIndex.set(entry.id, entry);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Index multiple entries
|
|
40
|
+
*/
|
|
41
|
+
async addEntries(entries) {
|
|
42
|
+
await Promise.all(entries.map((e) => this.addEntry(e)));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Remove an entry from the index
|
|
46
|
+
*/
|
|
47
|
+
removeEntry(id) {
|
|
48
|
+
return this.memoryIndex.delete(id);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Search for similar entries
|
|
52
|
+
*/
|
|
53
|
+
async search(query, options = {}) {
|
|
54
|
+
const limit = options.limit || this.config.topK;
|
|
55
|
+
const minScore = options.minScore ?? this.config.minScore;
|
|
56
|
+
// Embed the query
|
|
57
|
+
let queryEmbedding;
|
|
58
|
+
try {
|
|
59
|
+
queryEmbedding = await this.embeddingService.embed(query);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.warn('Failed to embed query:', error);
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
// Search index
|
|
66
|
+
const results = [];
|
|
67
|
+
for (const entry of this.memoryIndex.values()) {
|
|
68
|
+
if (!entry.embedding)
|
|
69
|
+
continue;
|
|
70
|
+
const score = this.embeddingService.cosineSimilarity(queryEmbedding, entry.embedding);
|
|
71
|
+
if (score >= minScore) {
|
|
72
|
+
results.push({ entry, score });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Sort by score and limit
|
|
76
|
+
results.sort((a, b) => b.score - a.score);
|
|
77
|
+
return results.slice(0, limit);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get an entry by ID
|
|
81
|
+
*/
|
|
82
|
+
getEntry(id) {
|
|
83
|
+
return this.memoryIndex.get(id) || null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get all indexed entries
|
|
87
|
+
*/
|
|
88
|
+
getAllEntries() {
|
|
89
|
+
return Array.from(this.memoryIndex.values());
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get index statistics
|
|
93
|
+
*/
|
|
94
|
+
getStats() {
|
|
95
|
+
let hasEmbeddings = 0;
|
|
96
|
+
for (const entry of this.memoryIndex.values()) {
|
|
97
|
+
if (entry.embedding)
|
|
98
|
+
hasEmbeddings++;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
indexedCount: this.memoryIndex.size,
|
|
102
|
+
hasEmbeddings,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Clear the index
|
|
107
|
+
*/
|
|
108
|
+
clear() {
|
|
109
|
+
this.memoryIndex.clear();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=semantic-retrieval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-retrieval.js","sourceRoot":"","sources":["../../src/memory/semantic-retrieval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart Consolidator Module for UAP
|
|
3
|
+
*
|
|
4
|
+
* Implements intelligent memory consolidation based on relevance, recency, and patterns.
|
|
5
|
+
*/
|
|
6
|
+
export interface MemoryEntry {
|
|
7
|
+
id: string;
|
|
8
|
+
content: string;
|
|
9
|
+
type: string;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
importance?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ConsolidationConfig {
|
|
14
|
+
minEntriesToConsolidate: number;
|
|
15
|
+
maxTokensPerSummary: number;
|
|
16
|
+
similarityThreshold: number;
|
|
17
|
+
priorityBy: 'importance' | 'recency' | 'relevance';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Smart Consolidator
|
|
21
|
+
* Intelligently consolidates related memories into summaries
|
|
22
|
+
*/
|
|
23
|
+
export declare class SmartConsolidator {
|
|
24
|
+
private config;
|
|
25
|
+
constructor(config?: Partial<ConsolidationConfig>);
|
|
26
|
+
/**
|
|
27
|
+
* Consolidate a batch of memories into summaries
|
|
28
|
+
*/
|
|
29
|
+
consolidate(memories: MemoryEntry[]): Array<{
|
|
30
|
+
summary: string;
|
|
31
|
+
sourceIds: string[];
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Get consolidation recommendations for a batch of memories
|
|
35
|
+
*/
|
|
36
|
+
getRecommendations(memories: MemoryEntry[]): Array<{
|
|
37
|
+
ids: string[];
|
|
38
|
+
reason: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* Group similar memories together
|
|
42
|
+
*/
|
|
43
|
+
private groupSimilarMemories;
|
|
44
|
+
/**
|
|
45
|
+
* Check if two pieces of content are similar
|
|
46
|
+
*/
|
|
47
|
+
private areSimilar;
|
|
48
|
+
/**
|
|
49
|
+
* Generate a summary from multiple memories
|
|
50
|
+
*/
|
|
51
|
+
private generateSummary;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=smart-consolidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-consolidator.d.ts","sourceRoot":"","sources":["../../src/memory/smart-consolidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;CACpD;AASD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAIrD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA8BrF;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBrF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,OAAO,CAAC,eAAe;CAkCxB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart Consolidator Module for UAP
|
|
3
|
+
*
|
|
4
|
+
* Implements intelligent memory consolidation based on relevance, recency, and patterns.
|
|
5
|
+
*/
|
|
6
|
+
import { estimateTokens } from './context-compressor.js';
|
|
7
|
+
const DEFAULT_CONFIG = {
|
|
8
|
+
minEntriesToConsolidate: 5,
|
|
9
|
+
maxTokensPerSummary: 500,
|
|
10
|
+
similarityThreshold: 0.7,
|
|
11
|
+
priorityBy: 'importance',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Smart Consolidator
|
|
15
|
+
* Intelligently consolidates related memories into summaries
|
|
16
|
+
*/
|
|
17
|
+
export class SmartConsolidator {
|
|
18
|
+
config;
|
|
19
|
+
constructor(config = {}) {
|
|
20
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Consolidate a batch of memories into summaries
|
|
24
|
+
*/
|
|
25
|
+
consolidate(memories) {
|
|
26
|
+
if (memories.length < this.config.minEntriesToConsolidate) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
// Group similar memories
|
|
30
|
+
const groups = this.groupSimilarMemories(memories);
|
|
31
|
+
// Generate summaries for each group
|
|
32
|
+
const results = [];
|
|
33
|
+
for (const group of groups) {
|
|
34
|
+
if (group.length >= 2) {
|
|
35
|
+
const summary = this.generateSummary(group);
|
|
36
|
+
results.push({
|
|
37
|
+
summary,
|
|
38
|
+
sourceIds: group.map((m) => m.id),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Keep single entries as-is if they're important
|
|
43
|
+
results.push({
|
|
44
|
+
summary: group[0].content,
|
|
45
|
+
sourceIds: [group[0].id],
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get consolidation recommendations for a batch of memories
|
|
53
|
+
*/
|
|
54
|
+
getRecommendations(memories) {
|
|
55
|
+
const groups = this.groupSimilarMemories(memories);
|
|
56
|
+
const recommendations = [];
|
|
57
|
+
for (const group of groups) {
|
|
58
|
+
if (group.length >= 3) {
|
|
59
|
+
recommendations.push({
|
|
60
|
+
ids: group.map((m) => m.id),
|
|
61
|
+
reason: `${group.length} similar entries detected`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return recommendations;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Group similar memories together
|
|
69
|
+
*/
|
|
70
|
+
groupSimilarMemories(memories) {
|
|
71
|
+
const groups = [];
|
|
72
|
+
const processed = new Set();
|
|
73
|
+
for (const memory of memories) {
|
|
74
|
+
if (processed.has(memory.id))
|
|
75
|
+
continue;
|
|
76
|
+
const group = [memory];
|
|
77
|
+
processed.add(memory.id);
|
|
78
|
+
for (const other of memories) {
|
|
79
|
+
if (processed.has(other.id))
|
|
80
|
+
continue;
|
|
81
|
+
if (this.areSimilar(memory.content, other.content)) {
|
|
82
|
+
group.push(other);
|
|
83
|
+
processed.add(other.id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
groups.push(group);
|
|
87
|
+
}
|
|
88
|
+
return groups;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if two pieces of content are similar
|
|
92
|
+
*/
|
|
93
|
+
areSimilar(a, b) {
|
|
94
|
+
const tokensA = a.split(/\s+/).filter((t) => t.length > 3);
|
|
95
|
+
const tokensB = b.split(/\s+/).filter((t) => t.length > 3);
|
|
96
|
+
if (tokensA.length === 0 || tokensB.length === 0)
|
|
97
|
+
return false;
|
|
98
|
+
const setA = new Set(tokensA);
|
|
99
|
+
const setB = new Set(tokensB);
|
|
100
|
+
let intersection = 0;
|
|
101
|
+
for (const token of setA) {
|
|
102
|
+
if (setB.has(token))
|
|
103
|
+
intersection++;
|
|
104
|
+
}
|
|
105
|
+
const union = new Set([...tokensA, ...tokensB]).size;
|
|
106
|
+
const similarity = intersection / union;
|
|
107
|
+
return similarity >= this.config.similarityThreshold;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Generate a summary from multiple memories
|
|
111
|
+
*/
|
|
112
|
+
generateSummary(memories) {
|
|
113
|
+
// Sort by importance or recency
|
|
114
|
+
memories.sort((a, b) => {
|
|
115
|
+
if (this.config.priorityBy === 'importance') {
|
|
116
|
+
return (b.importance || 0) - (a.importance || 0);
|
|
117
|
+
}
|
|
118
|
+
else if (this.config.priorityBy === 'recency') {
|
|
119
|
+
return new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime();
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
// Take top entries up to token limit
|
|
126
|
+
const maxTokens = this.config.maxTokensPerSummary;
|
|
127
|
+
let tokens = 0;
|
|
128
|
+
const selected = [];
|
|
129
|
+
for (const memory of memories) {
|
|
130
|
+
const memoryTokens = estimateTokens(memory.content);
|
|
131
|
+
if (tokens + memoryTokens <= maxTokens) {
|
|
132
|
+
selected.push(memory);
|
|
133
|
+
tokens += memoryTokens;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Generate summary text
|
|
137
|
+
const summaryLines = [];
|
|
138
|
+
for (const memory of selected) {
|
|
139
|
+
summaryLines.push(`- ${memory.content}`);
|
|
140
|
+
}
|
|
141
|
+
return summaryLines.join('\n');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=smart-consolidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-consolidator.js","sourceRoot":"","sources":["../../src/memory/smart-consolidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View Memory Module for UAP
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for viewing and querying memory data.
|
|
5
|
+
*/
|
|
6
|
+
export interface MemoryEntry {
|
|
7
|
+
id: string;
|
|
8
|
+
content: string;
|
|
9
|
+
type: string;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
importance?: number;
|
|
12
|
+
tags?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface ViewMemoryConfig {
|
|
15
|
+
defaultLimit: number;
|
|
16
|
+
maxLimit: number;
|
|
17
|
+
sortBy: 'timestamp' | 'importance' | 'relevance';
|
|
18
|
+
sortOrder: 'asc' | 'desc';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* View Memory Manager
|
|
22
|
+
* Provides query and view capabilities for memory storage
|
|
23
|
+
*/
|
|
24
|
+
export declare class ViewMemory {
|
|
25
|
+
private config;
|
|
26
|
+
private memories;
|
|
27
|
+
constructor(config?: Partial<ViewMemoryConfig>);
|
|
28
|
+
/**
|
|
29
|
+
* Add a memory entry
|
|
30
|
+
*/
|
|
31
|
+
add(entry: Omit<MemoryEntry, 'id'>): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get a memory entry by ID
|
|
34
|
+
*/
|
|
35
|
+
get(id: string): MemoryEntry | null;
|
|
36
|
+
/**
|
|
37
|
+
* Get memories with filtering and pagination
|
|
38
|
+
*/
|
|
39
|
+
query(options?: QueryOptions): QueryResult;
|
|
40
|
+
/**
|
|
41
|
+
* Get recent memories
|
|
42
|
+
*/
|
|
43
|
+
recent(limit?: number): MemoryEntry[];
|
|
44
|
+
/**
|
|
45
|
+
* Get high-importance memories
|
|
46
|
+
*/
|
|
47
|
+
highImportance(threshold?: number, limit?: number): MemoryEntry[];
|
|
48
|
+
/**
|
|
49
|
+
* Get memory statistics
|
|
50
|
+
*/
|
|
51
|
+
getStats(): {
|
|
52
|
+
total: number;
|
|
53
|
+
byType: Record<string, number>;
|
|
54
|
+
avgImportance: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Clear all memories
|
|
58
|
+
*/
|
|
59
|
+
clear(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Get count of memories
|
|
62
|
+
*/
|
|
63
|
+
getCount(): number;
|
|
64
|
+
}
|
|
65
|
+
export interface QueryOptions {
|
|
66
|
+
type?: string;
|
|
67
|
+
tags?: string[];
|
|
68
|
+
search?: string;
|
|
69
|
+
importanceGte?: number;
|
|
70
|
+
importanceLte?: number;
|
|
71
|
+
limit?: number;
|
|
72
|
+
offset?: number;
|
|
73
|
+
}
|
|
74
|
+
export interface QueryResult {
|
|
75
|
+
memories: MemoryEntry[];
|
|
76
|
+
total: number;
|
|
77
|
+
limit: number;
|
|
78
|
+
offset: number;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=view-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-memory.d.ts","sourceRoot":"","sources":["../../src/memory/view-memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;IACjD,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AASD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAuC;gBAE3C,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAIlD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,MAAM;IAO3C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAInC;;OAEG;IACH,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,WAAW;IAsD9C;;OAEG;IACH,MAAM,CAAC,KAAK,GAAE,MAAiC,GAAG,WAAW,EAAE;IAM/D;;OAEG;IACH,cAAc,CAAC,SAAS,GAAE,MAAU,EAAE,KAAK,GAAE,MAAiC,GAAG,WAAW,EAAE;IAO9F;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC;KACvB;IAkBD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB;AAGD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View Memory Module for UAP
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for viewing and querying memory data.
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_CONFIG = {
|
|
7
|
+
defaultLimit: 20,
|
|
8
|
+
maxLimit: 100,
|
|
9
|
+
sortBy: 'timestamp',
|
|
10
|
+
sortOrder: 'desc',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* View Memory Manager
|
|
14
|
+
* Provides query and view capabilities for memory storage
|
|
15
|
+
*/
|
|
16
|
+
export class ViewMemory {
|
|
17
|
+
config;
|
|
18
|
+
memories = new Map();
|
|
19
|
+
constructor(config = {}) {
|
|
20
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Add a memory entry
|
|
24
|
+
*/
|
|
25
|
+
add(entry) {
|
|
26
|
+
const id = `mem-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
27
|
+
const fullEntry = { ...entry, id };
|
|
28
|
+
this.memories.set(id, fullEntry);
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get a memory entry by ID
|
|
33
|
+
*/
|
|
34
|
+
get(id) {
|
|
35
|
+
return this.memories.get(id) || null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get memories with filtering and pagination
|
|
39
|
+
*/
|
|
40
|
+
query(options = {}) {
|
|
41
|
+
const limit = options.limit || this.config.defaultLimit;
|
|
42
|
+
const offset = options.offset || 0;
|
|
43
|
+
let results = Array.from(this.memories.values());
|
|
44
|
+
// Apply filters
|
|
45
|
+
if (options.type) {
|
|
46
|
+
results = results.filter((m) => m.type === options.type);
|
|
47
|
+
}
|
|
48
|
+
if (options.tags && options.tags.length > 0) {
|
|
49
|
+
results = results.filter((m) => m.tags?.some((tag) => options.tags.includes(tag)));
|
|
50
|
+
}
|
|
51
|
+
if (options.importanceGte !== undefined) {
|
|
52
|
+
const gte = options.importanceGte;
|
|
53
|
+
results = results.filter((m) => (m.importance || 0) >= gte);
|
|
54
|
+
}
|
|
55
|
+
if (options.importanceLte !== undefined) {
|
|
56
|
+
const lte = options.importanceLte;
|
|
57
|
+
results = results.filter((m) => (m.importance || 0) <= lte);
|
|
58
|
+
}
|
|
59
|
+
if (options.search) {
|
|
60
|
+
const searchLower = options.search.toLowerCase();
|
|
61
|
+
results = results.filter((m) => m.content.toLowerCase().includes(searchLower));
|
|
62
|
+
}
|
|
63
|
+
// Apply sorting
|
|
64
|
+
results.sort((a, b) => {
|
|
65
|
+
let comparison = 0;
|
|
66
|
+
if (this.config.sortBy === 'timestamp') {
|
|
67
|
+
comparison = new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime();
|
|
68
|
+
}
|
|
69
|
+
else if (this.config.sortBy === 'importance') {
|
|
70
|
+
comparison = (a.importance || 0) - (b.importance || 0);
|
|
71
|
+
}
|
|
72
|
+
return this.config.sortOrder === 'asc' ? comparison : -comparison;
|
|
73
|
+
});
|
|
74
|
+
// Apply pagination
|
|
75
|
+
const paginated = results.slice(offset, offset + limit);
|
|
76
|
+
return {
|
|
77
|
+
memories: paginated,
|
|
78
|
+
total: results.length,
|
|
79
|
+
limit,
|
|
80
|
+
offset,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get recent memories
|
|
85
|
+
*/
|
|
86
|
+
recent(limit = this.config.defaultLimit) {
|
|
87
|
+
const results = Array.from(this.memories.values());
|
|
88
|
+
results.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
89
|
+
return results.slice(0, limit);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get high-importance memories
|
|
93
|
+
*/
|
|
94
|
+
highImportance(threshold = 7, limit = this.config.defaultLimit) {
|
|
95
|
+
const results = Array.from(this.memories.values());
|
|
96
|
+
const filtered = results.filter((m) => (m.importance || 0) >= threshold);
|
|
97
|
+
filtered.sort((a, b) => (b.importance || 0) - (a.importance || 0));
|
|
98
|
+
return filtered.slice(0, limit);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get memory statistics
|
|
102
|
+
*/
|
|
103
|
+
getStats() {
|
|
104
|
+
const memories = Array.from(this.memories.values());
|
|
105
|
+
const byType = new Map();
|
|
106
|
+
let totalImportance = 0;
|
|
107
|
+
for (const memory of memories) {
|
|
108
|
+
byType.set(memory.type, (byType.get(memory.type) || 0) + 1);
|
|
109
|
+
totalImportance += memory.importance || 0;
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
total: memories.length,
|
|
113
|
+
byType: Object.fromEntries(byType),
|
|
114
|
+
avgImportance: memories.length > 0 ? totalImportance / memories.length : 0,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Clear all memories
|
|
119
|
+
*/
|
|
120
|
+
clear() {
|
|
121
|
+
this.memories.clear();
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get count of memories
|
|
125
|
+
*/
|
|
126
|
+
getCount() {
|
|
127
|
+
return this.memories.size;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=view-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-memory.js","sourceRoot":"","sources":["../../src/memory/view-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wrapped Memory Module for UAP
|
|
3
|
+
*
|
|
4
|
+
* Provides a wrapper interface for memory storage with additional utilities.
|
|
5
|
+
*/
|
|
6
|
+
export interface MemoryEntry {
|
|
7
|
+
id: string;
|
|
8
|
+
content: string;
|
|
9
|
+
type: string;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
importance?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface WrappedMemoryConfig {
|
|
14
|
+
autoId: boolean;
|
|
15
|
+
idPrefix: string;
|
|
16
|
+
defaultType: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Wrapped Memory
|
|
20
|
+
* A wrapper around memory storage with convenience methods
|
|
21
|
+
*/
|
|
22
|
+
export declare class WrappedMemory {
|
|
23
|
+
private config;
|
|
24
|
+
private storage;
|
|
25
|
+
constructor(config?: Partial<WrappedMemoryConfig>);
|
|
26
|
+
/**
|
|
27
|
+
* Add a memory entry
|
|
28
|
+
*/
|
|
29
|
+
add(entry: Omit<MemoryEntry, 'id'> & {
|
|
30
|
+
id?: string;
|
|
31
|
+
}): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get a memory entry by ID
|
|
34
|
+
*/
|
|
35
|
+
get(id: string): MemoryEntry | null;
|
|
36
|
+
/**
|
|
37
|
+
* Update a memory entry
|
|
38
|
+
*/
|
|
39
|
+
update(id: string, content: string, type?: string, importance?: number): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Delete a memory entry
|
|
42
|
+
*/
|
|
43
|
+
delete(id: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Get all entries
|
|
46
|
+
*/
|
|
47
|
+
getAll(): MemoryEntry[];
|
|
48
|
+
/**
|
|
49
|
+
* Query entries by type
|
|
50
|
+
*/
|
|
51
|
+
getByType(type: string): MemoryEntry[];
|
|
52
|
+
/**
|
|
53
|
+
* Search content
|
|
54
|
+
*/
|
|
55
|
+
search(query: string, limit?: number): MemoryEntry[];
|
|
56
|
+
/**
|
|
57
|
+
* Get entries by date range
|
|
58
|
+
*/
|
|
59
|
+
getByDateRange(start: Date, end: Date, limit?: number): MemoryEntry[];
|
|
60
|
+
/**
|
|
61
|
+
* Count entries
|
|
62
|
+
*/
|
|
63
|
+
count(): number;
|
|
64
|
+
/**
|
|
65
|
+
* Clear all entries
|
|
66
|
+
*/
|
|
67
|
+
clear(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Export all data as JSON
|
|
70
|
+
*/
|
|
71
|
+
export(): string;
|
|
72
|
+
/**
|
|
73
|
+
* Import data from JSON
|
|
74
|
+
*/
|
|
75
|
+
import(data: string): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=wrapped-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapped-memory.d.ts","sourceRoot":"","sources":["../../src/memory/wrapped-memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAuC;gBAE1C,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAIrD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAiB7D;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAInC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBhF;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;;OAEG;IACH,MAAM,IAAI,WAAW,EAAE;IAIvB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAItC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAOxD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IASrE;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAO3B"}
|