opcode-pg-memory 2.2.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.
- package/.env.example +42 -0
- package/README.md +132 -0
- package/dist/cli.js +165 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20938 -0
- package/dist/mcp-server.d.ts +8 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +24047 -0
- package/dist/src/cache/semantic-cache.d.ts +120 -0
- package/dist/src/cache/semantic-cache.d.ts.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/config.d.ts +39 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/db/init-db.d.ts +45 -0
- package/dist/src/db/init-db.d.ts.map +1 -0
- package/dist/src/hooks/message-part-updated.d.ts +24 -0
- package/dist/src/hooks/message-part-updated.d.ts.map +1 -0
- package/dist/src/hooks/message-updated.d.ts +24 -0
- package/dist/src/hooks/message-updated.d.ts.map +1 -0
- package/dist/src/hooks/session-compacting.d.ts +50 -0
- package/dist/src/hooks/session-compacting.d.ts.map +1 -0
- package/dist/src/hooks/session-completed.d.ts +36 -0
- package/dist/src/hooks/session-completed.d.ts.map +1 -0
- package/dist/src/hooks/session-created.d.ts +23 -0
- package/dist/src/hooks/session-created.d.ts.map +1 -0
- package/dist/src/hooks/tool-execute.d.ts +32 -0
- package/dist/src/hooks/tool-execute.d.ts.map +1 -0
- package/dist/src/index.d.ts +64 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/mcp/hindsight-reflect-omo.d.ts +64 -0
- package/dist/src/mcp/hindsight-reflect-omo.d.ts.map +1 -0
- package/dist/src/mcp/hindsight-reflect.d.ts +75 -0
- package/dist/src/mcp/hindsight-reflect.d.ts.map +1 -0
- package/dist/src/mcp/recall-memory-omo.d.ts +47 -0
- package/dist/src/mcp/recall-memory-omo.d.ts.map +1 -0
- package/dist/src/mcp/recall-memory.d.ts +89 -0
- package/dist/src/mcp/recall-memory.d.ts.map +1 -0
- package/dist/src/omo/adapter.d.ts +144 -0
- package/dist/src/omo/adapter.d.ts.map +1 -0
- package/dist/src/omo/types.d.ts +132 -0
- package/dist/src/omo/types.d.ts.map +1 -0
- package/dist/src/services/keyword.d.ts +4 -0
- package/dist/src/services/keyword.d.ts.map +1 -0
- package/dist/src/services/logger.d.ts +8 -0
- package/dist/src/services/logger.d.ts.map +1 -0
- package/dist/src/services/privacy.d.ts +4 -0
- package/dist/src/services/privacy.d.ts.map +1 -0
- package/dist/src/topic/segment-manager.d.ts +165 -0
- package/dist/src/topic/segment-manager.d.ts.map +1 -0
- package/dist/src/types.d.ts +405 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/utils/embedding.d.ts +44 -0
- package/dist/src/utils/embedding.d.ts.map +1 -0
- package/dist/src/utils/token-budget.d.ts +68 -0
- package/dist/src/utils/token-budget.d.ts.map +1 -0
- package/package.json +68 -0
- package/scripts/migration-v2.sql +187 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { Pool } from 'pg';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a topic segment boundary within a session.
|
|
4
|
+
* Segments partition a session into coherent topic units,
|
|
5
|
+
* preventing entity contamination across different topics.
|
|
6
|
+
*/
|
|
7
|
+
export interface TopicSegmentInfo {
|
|
8
|
+
id: string;
|
|
9
|
+
sessionMapId: string;
|
|
10
|
+
segmentIndex: number;
|
|
11
|
+
startMessageExternalId: string;
|
|
12
|
+
endMessageExternalId?: string;
|
|
13
|
+
summary?: string;
|
|
14
|
+
embedding?: number[];
|
|
15
|
+
closedAt?: Date;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Configuration for the TopicManager's sliding window
|
|
19
|
+
* topic boundary detection algorithm.
|
|
20
|
+
*/
|
|
21
|
+
export interface TopicManagerConfig {
|
|
22
|
+
/** Number of recent events to keep in the sliding window for comparison. Default: 3 */
|
|
23
|
+
windowSize: number;
|
|
24
|
+
/** Cosine similarity threshold below which a new topic segment is created. Default: 0.3 */
|
|
25
|
+
mutationThreshold: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Standard event shape accepted by classifyEvent().
|
|
29
|
+
* Compatible with tool.execute.after, message.updated, and general events.
|
|
30
|
+
*/
|
|
31
|
+
export type StandardEvent = {
|
|
32
|
+
type: string;
|
|
33
|
+
session?: {
|
|
34
|
+
id: string;
|
|
35
|
+
};
|
|
36
|
+
messageId?: string;
|
|
37
|
+
tool?: {
|
|
38
|
+
name: string;
|
|
39
|
+
parameters?: Record<string, any>;
|
|
40
|
+
};
|
|
41
|
+
result?: {
|
|
42
|
+
success: boolean;
|
|
43
|
+
data?: any;
|
|
44
|
+
error?: string;
|
|
45
|
+
};
|
|
46
|
+
message?: {
|
|
47
|
+
id: string;
|
|
48
|
+
content?: string;
|
|
49
|
+
role?: string;
|
|
50
|
+
};
|
|
51
|
+
[key: string]: any;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Intra-session topic boundary detector using sliding window embedding similarity.
|
|
55
|
+
*
|
|
56
|
+
* How it works:
|
|
57
|
+
* 1. Each incoming event is embedded (via the shared EmbeddingService).
|
|
58
|
+
* 2. The embedding is added to a fixed-size window buffer.
|
|
59
|
+
* 3. Average cosine similarity between window items and the current segment's
|
|
60
|
+
* centroid embedding is computed.
|
|
61
|
+
* 4. If similarity drops below `mutationThreshold`, the current segment is closed
|
|
62
|
+
* and a new one begins. Otherwise, the segment centroid is updated via
|
|
63
|
+
* moving average (0.7 current + 0.3 new).
|
|
64
|
+
*
|
|
65
|
+
* This prevents entity contamination across different topics within the same
|
|
66
|
+
* OpenCode session.
|
|
67
|
+
*/
|
|
68
|
+
export declare class TopicManager {
|
|
69
|
+
/** Internal UUID from the sessions table (session_map_id). */
|
|
70
|
+
private sessionMapId;
|
|
71
|
+
/** External OpenCode session ID (as seen in event.session.id). */
|
|
72
|
+
private opencodeSessionId;
|
|
73
|
+
/** All topic segments for this session, ordered by segmentIndex. */
|
|
74
|
+
private segments;
|
|
75
|
+
/** The currently open (unclosed) segment, if any. */
|
|
76
|
+
private currentSegment;
|
|
77
|
+
/**
|
|
78
|
+
* Fixed-size sliding window of recent event embeddings.
|
|
79
|
+
* Used to detect topic drift by comparing against the segment centroid.
|
|
80
|
+
*/
|
|
81
|
+
private windowBuffer;
|
|
82
|
+
/** Maximum number of items in the window buffer. */
|
|
83
|
+
private readonly windowSize;
|
|
84
|
+
/** Cosine similarity threshold for topic boundary detection. */
|
|
85
|
+
private readonly mutationThreshold;
|
|
86
|
+
/** PostgreSQL connection pool. */
|
|
87
|
+
private pool;
|
|
88
|
+
constructor(pool: Pool, sessionMapId: string, opencodeSessionId: string, config?: Partial<TopicManagerConfig>);
|
|
89
|
+
/**
|
|
90
|
+
* Classify an incoming event: decide whether it belongs to the current
|
|
91
|
+
* topic segment or triggers a new one.
|
|
92
|
+
*
|
|
93
|
+
* This is the primary entry point for the event handler.
|
|
94
|
+
* Call this for every tool.execute.after and message.updated event.
|
|
95
|
+
*
|
|
96
|
+
* @returns The TopicSegmentInfo this event belongs to.
|
|
97
|
+
*/
|
|
98
|
+
classifyEvent(event: StandardEvent): Promise<TopicSegmentInfo>;
|
|
99
|
+
/**
|
|
100
|
+
* Create a new topic segment in the database and track it in memory.
|
|
101
|
+
*/
|
|
102
|
+
createNewSegment(sessionMapId: string, index: number, startMessageId: string): Promise<TopicSegmentInfo>;
|
|
103
|
+
/**
|
|
104
|
+
* Close the current topic segment: generate a summary, compute its
|
|
105
|
+
* embedding, and persist both to the database.
|
|
106
|
+
*
|
|
107
|
+
* After calling this, `currentSegment` is set to null.
|
|
108
|
+
*/
|
|
109
|
+
closeCurrentSegment(endMessageId: string): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Close all currently open segments (should be called when the
|
|
112
|
+
* OpenCode session ends or is compacted).
|
|
113
|
+
*
|
|
114
|
+
* Updates the session's last_active_at timestamp.
|
|
115
|
+
*/
|
|
116
|
+
closeAllPendingSegments(): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Generate a 1-sentence summary for a segment by inspecting its
|
|
119
|
+
* observations and producing a heuristic or LLM-generated description.
|
|
120
|
+
*
|
|
121
|
+
* Uses a heuristic by default (tool name aggregation). The LLM path
|
|
122
|
+
* can be wired in later for higher-quality summaries.
|
|
123
|
+
*/
|
|
124
|
+
retrieveSegmentSummary(segmentId: string): Promise<string>;
|
|
125
|
+
/**
|
|
126
|
+
* Factory method: resolve the internal session_map_id from the
|
|
127
|
+
* OpenCode session ID, load any existing segments, and return a
|
|
128
|
+
* fully initialized TopicManager.
|
|
129
|
+
*
|
|
130
|
+
* Typical usage:
|
|
131
|
+
* const tm = await TopicManager.forSession(pool, event.session.id);
|
|
132
|
+
*/
|
|
133
|
+
static forSession(pool: Pool, opencodeSessionId: string, config?: Partial<TopicManagerConfig>): Promise<TopicManager>;
|
|
134
|
+
/** Returns the internal session UUID (session_map_id). */
|
|
135
|
+
getSessionMapId(): string;
|
|
136
|
+
/** Returns the OpenCode external session ID. */
|
|
137
|
+
getOpenCodeSessionId(): string;
|
|
138
|
+
/** Returns the current segment ID, or null if no segment is open. */
|
|
139
|
+
getCurrentSegmentId(): string | null;
|
|
140
|
+
/** Returns the current segment, or null. */
|
|
141
|
+
getCurrentSegment(): TopicSegmentInfo | null;
|
|
142
|
+
/** Returns all segments for this session (including closed ones). */
|
|
143
|
+
getSegments(): TopicSegmentInfo[];
|
|
144
|
+
/**
|
|
145
|
+
* Extract a representative text string from an event for embedding.
|
|
146
|
+
*
|
|
147
|
+
* - For tool.execute.after events: combines tool name with a snippet
|
|
148
|
+
* of the result output.
|
|
149
|
+
* - For message events: uses the message content directly.
|
|
150
|
+
* - For all others: falls back to the event type string.
|
|
151
|
+
*/
|
|
152
|
+
private extractTextFromEvent;
|
|
153
|
+
/**
|
|
154
|
+
* Update a segment's centroid embedding using a moving average.
|
|
155
|
+
*
|
|
156
|
+
* Formula: 0.7 * current + 0.3 * new, then normalized to unit length.
|
|
157
|
+
*
|
|
158
|
+
* This ensures the centroid slowly tracks topic drift within a segment
|
|
159
|
+
* while remaining anchored to the dominant theme.
|
|
160
|
+
*
|
|
161
|
+
* Gracefully handles mismatched vector lengths and null/empty inputs.
|
|
162
|
+
*/
|
|
163
|
+
private updateSegmentEmbedding;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=segment-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segment-manager.d.ts","sourceRoot":"","sources":["../../../src/topic/segment-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
export type EntityTier = 'permanent' | 'project' | 'session';
|
|
2
|
+
export type RelationType = 'belongs_to' | 'depends_on' | 'references' | 'implements' | 'uses' | 'custom';
|
|
3
|
+
export interface Entity {
|
|
4
|
+
id: string;
|
|
5
|
+
session_id: string;
|
|
6
|
+
topic_segment_id?: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: string;
|
|
9
|
+
tier: EntityTier;
|
|
10
|
+
weight: number;
|
|
11
|
+
description?: string;
|
|
12
|
+
embedding?: number[];
|
|
13
|
+
first_seen_at: Date;
|
|
14
|
+
last_seen_at: Date;
|
|
15
|
+
confidence: number;
|
|
16
|
+
metadata: Record<string, any>;
|
|
17
|
+
}
|
|
18
|
+
export interface Relation {
|
|
19
|
+
id: string;
|
|
20
|
+
source_entity_id: string;
|
|
21
|
+
target_entity_id: string;
|
|
22
|
+
relation_type: RelationType;
|
|
23
|
+
confidence: number;
|
|
24
|
+
description?: string;
|
|
25
|
+
created_at: Date;
|
|
26
|
+
session_id: string;
|
|
27
|
+
topic_segment_id?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface Observation {
|
|
30
|
+
id: string;
|
|
31
|
+
session_id: string;
|
|
32
|
+
topic_segment_id?: string;
|
|
33
|
+
tool_name?: string;
|
|
34
|
+
tool_input_summary?: string;
|
|
35
|
+
tool_output_summary?: string;
|
|
36
|
+
embedding?: number[];
|
|
37
|
+
importance: number;
|
|
38
|
+
created_at: Date;
|
|
39
|
+
message_id?: string;
|
|
40
|
+
metadata: Record<string, any>;
|
|
41
|
+
}
|
|
42
|
+
export interface Reflection {
|
|
43
|
+
id: string;
|
|
44
|
+
session_id: string;
|
|
45
|
+
topic_segment_id?: string;
|
|
46
|
+
summary: string;
|
|
47
|
+
source_observation_ids: string[];
|
|
48
|
+
confidence: number;
|
|
49
|
+
pattern_type?: string;
|
|
50
|
+
created_at: Date;
|
|
51
|
+
embedding?: number[];
|
|
52
|
+
metadata: Record<string, any>;
|
|
53
|
+
}
|
|
54
|
+
export interface SemanticCache {
|
|
55
|
+
id: string;
|
|
56
|
+
query_hash: string;
|
|
57
|
+
query_text: string;
|
|
58
|
+
query_embedding: number[];
|
|
59
|
+
response_text: string;
|
|
60
|
+
hit_count: number;
|
|
61
|
+
last_hit_at: Date;
|
|
62
|
+
created_at: Date;
|
|
63
|
+
similarity_threshold: number;
|
|
64
|
+
is_pruned: boolean;
|
|
65
|
+
session_id?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface SessionMap {
|
|
68
|
+
id: string;
|
|
69
|
+
opencode_session_id: string;
|
|
70
|
+
omo_task_id?: string;
|
|
71
|
+
project_id?: string;
|
|
72
|
+
model_context_limit: number;
|
|
73
|
+
created_at: Date;
|
|
74
|
+
last_active_at: Date;
|
|
75
|
+
metadata: Record<string, any>;
|
|
76
|
+
}
|
|
77
|
+
export interface TopicSegment {
|
|
78
|
+
id: string;
|
|
79
|
+
session_map_id: string;
|
|
80
|
+
segment_index: number;
|
|
81
|
+
summary?: string;
|
|
82
|
+
embedding?: number[];
|
|
83
|
+
start_message_external_id?: string;
|
|
84
|
+
end_message_external_id?: string;
|
|
85
|
+
created_at: Date;
|
|
86
|
+
closed_at?: Date;
|
|
87
|
+
observation_count: number;
|
|
88
|
+
metadata: Record<string, any>;
|
|
89
|
+
}
|
|
90
|
+
export interface TopicSegmentInfo {
|
|
91
|
+
id: string;
|
|
92
|
+
sessionMapId: string;
|
|
93
|
+
index: number;
|
|
94
|
+
summary?: string;
|
|
95
|
+
embedding?: number[];
|
|
96
|
+
startMessageId?: string;
|
|
97
|
+
endMessageId?: string;
|
|
98
|
+
observationCount: number;
|
|
99
|
+
}
|
|
100
|
+
export interface CallerContext {
|
|
101
|
+
type: 'user' | 'omo_agent';
|
|
102
|
+
current_goal?: string;
|
|
103
|
+
current_session_id?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface EventSynchronizerConfig {
|
|
106
|
+
mode: 'hooks' | 'polling' | 'event';
|
|
107
|
+
pollingIntervalMs?: number;
|
|
108
|
+
}
|
|
109
|
+
export interface TopicConfig {
|
|
110
|
+
mutationThreshold: number;
|
|
111
|
+
windowSize: number;
|
|
112
|
+
enableSummaryGeneration: boolean;
|
|
113
|
+
}
|
|
114
|
+
export interface PluginConfig {
|
|
115
|
+
database: {
|
|
116
|
+
host: string;
|
|
117
|
+
port: number;
|
|
118
|
+
database: string;
|
|
119
|
+
user: string;
|
|
120
|
+
password: string;
|
|
121
|
+
ssl?: boolean;
|
|
122
|
+
};
|
|
123
|
+
embedding: {
|
|
124
|
+
model: string;
|
|
125
|
+
dimensions: number;
|
|
126
|
+
batchSize: number;
|
|
127
|
+
};
|
|
128
|
+
cache: {
|
|
129
|
+
initialThreshold: number;
|
|
130
|
+
adjustmentStep: number;
|
|
131
|
+
minThreshold: number;
|
|
132
|
+
maxThreshold: number;
|
|
133
|
+
enabled: boolean;
|
|
134
|
+
};
|
|
135
|
+
reflection: {
|
|
136
|
+
observationThreshold: number;
|
|
137
|
+
segmentThreshold: number;
|
|
138
|
+
modelSize: '7b' | '14b' | 'full';
|
|
139
|
+
offPeakHours: number[];
|
|
140
|
+
enabled: boolean;
|
|
141
|
+
};
|
|
142
|
+
tokenBudget: {
|
|
143
|
+
contextLimitRatio: number;
|
|
144
|
+
minTokens: number;
|
|
145
|
+
maxTokens: number;
|
|
146
|
+
};
|
|
147
|
+
retrieval: {
|
|
148
|
+
defaultStrategies: string[];
|
|
149
|
+
rerankEnabled: boolean;
|
|
150
|
+
maxResults: number;
|
|
151
|
+
weights: {
|
|
152
|
+
semantic: number;
|
|
153
|
+
recency: number;
|
|
154
|
+
importance: number;
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
topic?: TopicConfig;
|
|
158
|
+
eventSynchronizer?: EventSynchronizerConfig;
|
|
159
|
+
}
|
|
160
|
+
export interface ToolExecuteBeforeHookInput {
|
|
161
|
+
tool: string;
|
|
162
|
+
sessionID: string;
|
|
163
|
+
callID: string;
|
|
164
|
+
}
|
|
165
|
+
export interface ToolExecuteBeforeHookOutput {
|
|
166
|
+
args: any;
|
|
167
|
+
}
|
|
168
|
+
export interface ToolExecuteAfterHookInput {
|
|
169
|
+
tool: string;
|
|
170
|
+
sessionID: string;
|
|
171
|
+
callID: string;
|
|
172
|
+
args: any;
|
|
173
|
+
}
|
|
174
|
+
export interface ToolExecuteAfterHookOutput {
|
|
175
|
+
title: string;
|
|
176
|
+
output: string;
|
|
177
|
+
metadata: any;
|
|
178
|
+
}
|
|
179
|
+
export interface SessionCompactingHookInput {
|
|
180
|
+
sessionID: string;
|
|
181
|
+
}
|
|
182
|
+
export interface SessionCompactingHookOutput {
|
|
183
|
+
context: string[];
|
|
184
|
+
prompt?: string;
|
|
185
|
+
}
|
|
186
|
+
export interface SessionCreatedEvent {
|
|
187
|
+
sessionID: string;
|
|
188
|
+
}
|
|
189
|
+
export interface SessionCompletedEvent {
|
|
190
|
+
sessionID: string;
|
|
191
|
+
}
|
|
192
|
+
export type StandardEvent = {
|
|
193
|
+
type: 'session.created';
|
|
194
|
+
sessionID: string;
|
|
195
|
+
} | {
|
|
196
|
+
type: 'tool.execute.after';
|
|
197
|
+
tool: string;
|
|
198
|
+
sessionID: string;
|
|
199
|
+
callID: string;
|
|
200
|
+
args: any;
|
|
201
|
+
} | {
|
|
202
|
+
type: 'message.updated';
|
|
203
|
+
sessionID: string;
|
|
204
|
+
messageID: string;
|
|
205
|
+
} | {
|
|
206
|
+
type: 'session.compacting';
|
|
207
|
+
sessionID: string;
|
|
208
|
+
} | {
|
|
209
|
+
type: 'session.completed';
|
|
210
|
+
sessionID: string;
|
|
211
|
+
};
|
|
212
|
+
export interface OpenCodeSession {
|
|
213
|
+
id: string;
|
|
214
|
+
projectId?: string;
|
|
215
|
+
model: {
|
|
216
|
+
id: string;
|
|
217
|
+
contextLimit: number;
|
|
218
|
+
name: string;
|
|
219
|
+
};
|
|
220
|
+
messages: OpenCodeMessage[];
|
|
221
|
+
}
|
|
222
|
+
export interface OpenCodeMessage {
|
|
223
|
+
id: string;
|
|
224
|
+
parentID?: string;
|
|
225
|
+
role: 'user' | 'assistant' | 'tool';
|
|
226
|
+
mode?: string;
|
|
227
|
+
agent?: string;
|
|
228
|
+
path?: {
|
|
229
|
+
cwd: string;
|
|
230
|
+
root: string;
|
|
231
|
+
};
|
|
232
|
+
cost?: number;
|
|
233
|
+
tokens?: {
|
|
234
|
+
total: number;
|
|
235
|
+
input: number;
|
|
236
|
+
output: number;
|
|
237
|
+
reasoning: number;
|
|
238
|
+
cache: {
|
|
239
|
+
write: number;
|
|
240
|
+
read: number;
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
modelID?: string;
|
|
244
|
+
providerID?: string;
|
|
245
|
+
time?: {
|
|
246
|
+
created: number;
|
|
247
|
+
completed?: number;
|
|
248
|
+
};
|
|
249
|
+
finish?: string;
|
|
250
|
+
content?: string;
|
|
251
|
+
summary?: {
|
|
252
|
+
diffs: any[];
|
|
253
|
+
};
|
|
254
|
+
parts?: OpenCodeMessagePart[];
|
|
255
|
+
message_id?: string;
|
|
256
|
+
reasoning?: string;
|
|
257
|
+
tool_calls?: OpenCodeToolCall[];
|
|
258
|
+
}
|
|
259
|
+
export interface OpenCodeMessagePart {
|
|
260
|
+
type: 'reasoning' | 'text' | 'tool' | 'image' | 'audio';
|
|
261
|
+
text?: string;
|
|
262
|
+
time?: {
|
|
263
|
+
start: number;
|
|
264
|
+
end?: number;
|
|
265
|
+
};
|
|
266
|
+
id: string;
|
|
267
|
+
sessionID: string;
|
|
268
|
+
messageID: string;
|
|
269
|
+
tool?: {
|
|
270
|
+
name: string;
|
|
271
|
+
callID: string;
|
|
272
|
+
state: {
|
|
273
|
+
status: 'pending' | 'completed' | 'failed';
|
|
274
|
+
input: Record<string, any>;
|
|
275
|
+
output?: any;
|
|
276
|
+
filepath?: string;
|
|
277
|
+
};
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
export interface OpenCodeToolCall {
|
|
281
|
+
type: string;
|
|
282
|
+
tool: string;
|
|
283
|
+
callID: string;
|
|
284
|
+
input: Record<string, any>;
|
|
285
|
+
output?: any;
|
|
286
|
+
status: string;
|
|
287
|
+
filepath?: string;
|
|
288
|
+
exists?: boolean;
|
|
289
|
+
truncated?: boolean;
|
|
290
|
+
}
|
|
291
|
+
export interface SessionCreatedInput {
|
|
292
|
+
session: OpenCodeSession;
|
|
293
|
+
}
|
|
294
|
+
export interface SessionCreatedOutput {
|
|
295
|
+
context?: {
|
|
296
|
+
memories?: string[];
|
|
297
|
+
facts?: string[];
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
export interface ToolExecuteBeforeInput {
|
|
301
|
+
session: {
|
|
302
|
+
id: string;
|
|
303
|
+
};
|
|
304
|
+
tool: {
|
|
305
|
+
name: string;
|
|
306
|
+
parameters: Record<string, any>;
|
|
307
|
+
};
|
|
308
|
+
messageId: string;
|
|
309
|
+
}
|
|
310
|
+
export interface ToolExecuteBeforeOutput {
|
|
311
|
+
parameters?: Record<string, any>;
|
|
312
|
+
}
|
|
313
|
+
export interface ToolExecuteAfterInput {
|
|
314
|
+
session: {
|
|
315
|
+
id: string;
|
|
316
|
+
};
|
|
317
|
+
tool: {
|
|
318
|
+
name: string;
|
|
319
|
+
parameters: Record<string, any>;
|
|
320
|
+
};
|
|
321
|
+
result: {
|
|
322
|
+
success: boolean;
|
|
323
|
+
data?: any;
|
|
324
|
+
error?: string;
|
|
325
|
+
};
|
|
326
|
+
messageId: string;
|
|
327
|
+
executionTimeMs: number;
|
|
328
|
+
}
|
|
329
|
+
export interface ToolExecuteAfterOutput {
|
|
330
|
+
}
|
|
331
|
+
export interface MessageUpdatedInput {
|
|
332
|
+
session: {
|
|
333
|
+
id: string;
|
|
334
|
+
};
|
|
335
|
+
message: OpenCodeMessage;
|
|
336
|
+
}
|
|
337
|
+
export interface MessageUpdatedOutput {
|
|
338
|
+
}
|
|
339
|
+
export interface MessagePartUpdatedInput {
|
|
340
|
+
session: {
|
|
341
|
+
id: string;
|
|
342
|
+
};
|
|
343
|
+
message: {
|
|
344
|
+
id: string;
|
|
345
|
+
partIndex: number;
|
|
346
|
+
content: string;
|
|
347
|
+
isComplete: boolean;
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
export interface MessagePartUpdatedOutput {
|
|
351
|
+
}
|
|
352
|
+
export interface SessionCompactingInput {
|
|
353
|
+
session: {
|
|
354
|
+
id: string;
|
|
355
|
+
};
|
|
356
|
+
messagesToCompact: string[];
|
|
357
|
+
compactionStrategy: 'prune' | 'summarize' | 'archive';
|
|
358
|
+
}
|
|
359
|
+
export interface SessionCompactingOutput {
|
|
360
|
+
preserveMessageIds?: string[];
|
|
361
|
+
}
|
|
362
|
+
export interface SessionCompletedInput {
|
|
363
|
+
session: {
|
|
364
|
+
id: string;
|
|
365
|
+
projectId?: string;
|
|
366
|
+
messageCount: number;
|
|
367
|
+
durationMs: number;
|
|
368
|
+
};
|
|
369
|
+
summary?: string;
|
|
370
|
+
}
|
|
371
|
+
export interface SessionCompletedOutput {
|
|
372
|
+
}
|
|
373
|
+
export interface RetrievedFact {
|
|
374
|
+
id?: string;
|
|
375
|
+
type: 'entity' | 'observation' | 'reflection' | 'relation' | 'message';
|
|
376
|
+
content: string;
|
|
377
|
+
tier?: EntityTier;
|
|
378
|
+
tokens: number;
|
|
379
|
+
relevanceScore: number;
|
|
380
|
+
metadata: Record<string, any>;
|
|
381
|
+
}
|
|
382
|
+
export interface CacheResult {
|
|
383
|
+
hit: boolean;
|
|
384
|
+
response?: string;
|
|
385
|
+
similarity?: number;
|
|
386
|
+
}
|
|
387
|
+
export interface HindsightReflectInput {
|
|
388
|
+
session_id?: string;
|
|
389
|
+
omo_task_id?: string;
|
|
390
|
+
topic_segment_id?: string;
|
|
391
|
+
trigger_type?: 'threshold' | 'scheduled' | 'manual';
|
|
392
|
+
observation_threshold?: number;
|
|
393
|
+
model_size?: '7b' | '14b' | 'full';
|
|
394
|
+
aggregate?: boolean;
|
|
395
|
+
}
|
|
396
|
+
export interface HindsightReflectOutput {
|
|
397
|
+
generated_reflections: Reflection[];
|
|
398
|
+
token_usage: {
|
|
399
|
+
input: number;
|
|
400
|
+
output: number;
|
|
401
|
+
total: number;
|
|
402
|
+
};
|
|
403
|
+
duration_ms: number;
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface EmbeddingConfig {
|
|
2
|
+
provider: 'openai' | 'deepseek' | 'ollama';
|
|
3
|
+
model: string;
|
|
4
|
+
dimensions: number;
|
|
5
|
+
batchSize: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class EmbeddingService {
|
|
8
|
+
private client;
|
|
9
|
+
private config;
|
|
10
|
+
constructor(config: EmbeddingConfig);
|
|
11
|
+
/**
|
|
12
|
+
* 生成单个文本的 embedding
|
|
13
|
+
* 对于长文本,自动分段嵌入后合并
|
|
14
|
+
*/
|
|
15
|
+
generateEmbedding(text: string): Promise<number[]>;
|
|
16
|
+
/**
|
|
17
|
+
* 批量生成 embeddings
|
|
18
|
+
*/
|
|
19
|
+
generateEmbeddings(texts: string[]): Promise<number[][]>;
|
|
20
|
+
/**
|
|
21
|
+
* 嵌入单个文本块
|
|
22
|
+
*/
|
|
23
|
+
private embedSingleChunk;
|
|
24
|
+
/**
|
|
25
|
+
* 调用本地 Ollama API 生成 embedding
|
|
26
|
+
*/
|
|
27
|
+
private embedWithOllama;
|
|
28
|
+
/**
|
|
29
|
+
* 将长文本切分成重叠的块
|
|
30
|
+
*/
|
|
31
|
+
private chunkText;
|
|
32
|
+
/**
|
|
33
|
+
* 平均合并多个 embeddings(向量的逐元素平均)
|
|
34
|
+
*/
|
|
35
|
+
private averageEmbeddings;
|
|
36
|
+
}
|
|
37
|
+
export declare function createEmbeddingService(): EmbeddingService;
|
|
38
|
+
/**
|
|
39
|
+
* 获取共享的 EmbeddingService 单例
|
|
40
|
+
* 惰性初始化:首次调用时创建,后续调用返回同一实例。
|
|
41
|
+
* 如果创建失败(如缺少 API Key),返回 null 而非抛出异常。
|
|
42
|
+
*/
|
|
43
|
+
export declare function getEmbeddingService(): EmbeddingService | null;
|
|
44
|
+
//# sourceMappingURL=embedding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../../src/utils/embedding.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;IAiBnC;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BxD;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAW9D;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;YACW,eAAe;IAwB7B;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAoB1B;AAGD,wBAAgB,sBAAsB,IAAI,gBAAgB,CAYzD;AAKD;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAW7D"}
|