@benchcubed/today-cli 1.0.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/README.md +296 -0
- package/dist/ai/bedrock-client.d.ts +1 -0
- package/dist/ai/bedrock-client.d.ts.map +1 -0
- package/dist/ai/bedrock-client.js +2 -0
- package/dist/ai/bedrock-client.js.map +1 -0
- package/dist/ai/knowledge-processor.d.ts +1 -0
- package/dist/ai/knowledge-processor.d.ts.map +1 -0
- package/dist/ai/knowledge-processor.js +2 -0
- package/dist/ai/knowledge-processor.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +70 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ask.d.ts +3 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +217 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/audit.d.ts +3 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +153 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +114 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +72 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/embeddings.d.ts +3 -0
- package/dist/commands/embeddings.d.ts.map +1 -0
- package/dist/commands/embeddings.js +118 -0
- package/dist/commands/embeddings.js.map +1 -0
- package/dist/commands/experts.d.ts +3 -0
- package/dist/commands/experts.d.ts.map +1 -0
- package/dist/commands/experts.js +129 -0
- package/dist/commands/experts.js.map +1 -0
- package/dist/commands/export-import.d.ts +4 -0
- package/dist/commands/export-import.d.ts.map +1 -0
- package/dist/commands/export-import.js +285 -0
- package/dist/commands/export-import.js.map +1 -0
- package/dist/commands/git.d.ts +4 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +274 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/impact.d.ts +3 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/impact.js +121 -0
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/insights.d.ts +3 -0
- package/dist/commands/insights.d.ts.map +1 -0
- package/dist/commands/insights.js +113 -0
- package/dist/commands/insights.js.map +1 -0
- package/dist/commands/learned.d.ts +3 -0
- package/dist/commands/learned.d.ts.map +1 -0
- package/dist/commands/learned.js +355 -0
- package/dist/commands/learned.js.map +1 -0
- package/dist/commands/onboard.d.ts +3 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +141 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/recent.d.ts +3 -0
- package/dist/commands/recent.d.ts.map +1 -0
- package/dist/commands/recent.js +83 -0
- package/dist/commands/recent.js.map +1 -0
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +203 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +120 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/config/index.d.ts +12 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +46 -0
- package/dist/config/index.js.map +1 -0
- package/dist/database/migrations.d.ts +13 -0
- package/dist/database/migrations.d.ts.map +1 -0
- package/dist/database/migrations.js +190 -0
- package/dist/database/migrations.js.map +1 -0
- package/dist/database/postgresql.d.ts +92 -0
- package/dist/database/postgresql.d.ts.map +1 -0
- package/dist/database/postgresql.js +382 -0
- package/dist/database/postgresql.js.map +1 -0
- package/dist/database/sqlite.d.ts +54 -0
- package/dist/database/sqlite.d.ts.map +1 -0
- package/dist/database/sqlite.js +337 -0
- package/dist/database/sqlite.js.map +1 -0
- package/dist/lambda/admin.d.ts +3 -0
- package/dist/lambda/admin.d.ts.map +1 -0
- package/dist/lambda/admin.js +818 -0
- package/dist/lambda/admin.js.map +1 -0
- package/dist/lambda/ai-services.d.ts +6 -0
- package/dist/lambda/ai-services.d.ts.map +1 -0
- package/dist/lambda/ai-services.js +472 -0
- package/dist/lambda/ai-services.js.map +1 -0
- package/dist/lambda/analytics.d.ts +3 -0
- package/dist/lambda/analytics.d.ts.map +1 -0
- package/dist/lambda/analytics.js +481 -0
- package/dist/lambda/analytics.js.map +1 -0
- package/dist/lambda/api-router.d.ts +3 -0
- package/dist/lambda/api-router.d.ts.map +1 -0
- package/dist/lambda/api-router.js +162 -0
- package/dist/lambda/api-router.js.map +1 -0
- package/dist/lambda/custom-topics.d.ts +3 -0
- package/dist/lambda/custom-topics.d.ts.map +1 -0
- package/dist/lambda/custom-topics.js +425 -0
- package/dist/lambda/custom-topics.js.map +1 -0
- package/dist/lambda/graph-builder.d.ts +3 -0
- package/dist/lambda/graph-builder.d.ts.map +1 -0
- package/dist/lambda/graph-builder.js +442 -0
- package/dist/lambda/graph-builder.js.map +1 -0
- package/dist/lambda/knowledge-ai.d.ts +3 -0
- package/dist/lambda/knowledge-ai.d.ts.map +1 -0
- package/dist/lambda/knowledge-ai.js +849 -0
- package/dist/lambda/knowledge-ai.js.map +1 -0
- package/dist/lambda/post-confirmation.d.ts +8 -0
- package/dist/lambda/post-confirmation.d.ts.map +1 -0
- package/dist/lambda/post-confirmation.js +92 -0
- package/dist/lambda/post-confirmation.js.map +1 -0
- package/dist/lambda/teams.d.ts +3 -0
- package/dist/lambda/teams.d.ts.map +1 -0
- package/dist/lambda/teams.js +568 -0
- package/dist/lambda/teams.js.map +1 -0
- package/dist/lib/export-helpers.d.ts +5 -0
- package/dist/lib/export-helpers.d.ts.map +1 -0
- package/dist/lib/export-helpers.js +137 -0
- package/dist/lib/export-helpers.js.map +1 -0
- package/dist/lib/import-helpers.d.ts +5 -0
- package/dist/lib/import-helpers.d.ts.map +1 -0
- package/dist/lib/import-helpers.js +185 -0
- package/dist/lib/import-helpers.js.map +1 -0
- package/dist/lib/insights-helpers.d.ts +123 -0
- package/dist/lib/insights-helpers.d.ts.map +1 -0
- package/dist/lib/insights-helpers.js +374 -0
- package/dist/lib/insights-helpers.js.map +1 -0
- package/dist/lib/search-helpers.d.ts +4 -0
- package/dist/lib/search-helpers.d.ts.map +1 -0
- package/dist/lib/search-helpers.js +124 -0
- package/dist/lib/search-helpers.js.map +1 -0
- package/dist/lib/secret-helpers.d.ts +2 -0
- package/dist/lib/secret-helpers.d.ts.map +1 -0
- package/dist/lib/secret-helpers.js +85 -0
- package/dist/lib/secret-helpers.js.map +1 -0
- package/dist/lib/stats-helpers.d.ts +41 -0
- package/dist/lib/stats-helpers.d.ts.map +1 -0
- package/dist/lib/stats-helpers.js +263 -0
- package/dist/lib/stats-helpers.js.map +1 -0
- package/dist/services/aws-api.d.ts +81 -0
- package/dist/services/aws-api.d.ts.map +1 -0
- package/dist/services/aws-api.js +388 -0
- package/dist/services/aws-api.js.map +1 -0
- package/dist/services/bedrock.d.ts +83 -0
- package/dist/services/bedrock.d.ts.map +1 -0
- package/dist/services/bedrock.js +434 -0
- package/dist/services/bedrock.js.map +1 -0
- package/dist/services/commit-learnings.d.ts +25 -0
- package/dist/services/commit-learnings.d.ts.map +1 -0
- package/dist/services/commit-learnings.js +180 -0
- package/dist/services/commit-learnings.js.map +1 -0
- package/dist/services/embedding-storage.d.ts +42 -0
- package/dist/services/embedding-storage.d.ts.map +1 -0
- package/dist/services/embedding-storage.js +124 -0
- package/dist/services/embedding-storage.js.map +1 -0
- package/dist/services/expert-engine.d.ts +21 -0
- package/dist/services/expert-engine.d.ts.map +1 -0
- package/dist/services/expert-engine.js +58 -0
- package/dist/services/expert-engine.js.map +1 -0
- package/dist/services/onboarding-accelerator.d.ts +118 -0
- package/dist/services/onboarding-accelerator.d.ts.map +1 -0
- package/dist/services/onboarding-accelerator.js +403 -0
- package/dist/services/onboarding-accelerator.js.map +1 -0
- package/dist/services/secret-detection.d.ts +46 -0
- package/dist/services/secret-detection.d.ts.map +1 -0
- package/dist/services/secret-detection.js +75 -0
- package/dist/services/secret-detection.js.map +1 -0
- package/dist/services/secret-manager-simple.d.ts +51 -0
- package/dist/services/secret-manager-simple.d.ts.map +1 -0
- package/dist/services/secret-manager-simple.js +119 -0
- package/dist/services/secret-manager-simple.js.map +1 -0
- package/dist/services/secret-manager.d.ts +150 -0
- package/dist/services/secret-manager.d.ts.map +1 -0
- package/dist/services/secret-manager.js +287 -0
- package/dist/services/secret-manager.js.map +1 -0
- package/dist/services/vector-embeddings.d.ts +70 -0
- package/dist/services/vector-embeddings.d.ts.map +1 -0
- package/dist/services/vector-embeddings.js +167 -0
- package/dist/services/vector-embeddings.js.map +1 -0
- package/dist/services/vector-search.d.ts +28 -0
- package/dist/services/vector-search.d.ts.map +1 -0
- package/dist/services/vector-search.js +192 -0
- package/dist/services/vector-search.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/formatting.d.ts +10 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +82 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/git.d.ts +52 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +182 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/validation.d.ts +17 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +187 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.database = exports.SQLiteDatabase = void 0;
|
|
7
|
+
const sqlite3_1 = __importDefault(require("sqlite3"));
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
class SQLiteDatabase {
|
|
12
|
+
constructor(dbPath) {
|
|
13
|
+
this.dbPath = dbPath || path_1.default.join(process.cwd(), '.today', 'knowledge.db');
|
|
14
|
+
this.ensureDirectoryExists();
|
|
15
|
+
this.db = new sqlite3_1.default.Database(this.dbPath);
|
|
16
|
+
this.initializeTables();
|
|
17
|
+
}
|
|
18
|
+
ensureDirectoryExists() {
|
|
19
|
+
const dir = path_1.default.dirname(this.dbPath);
|
|
20
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
21
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async initializeTables() {
|
|
25
|
+
const run = (0, util_1.promisify)(this.db.run.bind(this.db));
|
|
26
|
+
// Learning entries table
|
|
27
|
+
await run(`
|
|
28
|
+
CREATE TABLE IF NOT EXISTS learning_entries (
|
|
29
|
+
id TEXT PRIMARY KEY,
|
|
30
|
+
content TEXT NOT NULL,
|
|
31
|
+
author_id TEXT NOT NULL,
|
|
32
|
+
team_id TEXT NOT NULL,
|
|
33
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
34
|
+
ai_topics TEXT, -- JSON array
|
|
35
|
+
expertise_level TEXT DEFAULT 'beginner',
|
|
36
|
+
impact_score REAL DEFAULT 0,
|
|
37
|
+
helpfulness_rating REAL DEFAULT 0,
|
|
38
|
+
time_saved_minutes INTEGER DEFAULT 0,
|
|
39
|
+
view_count INTEGER DEFAULT 0,
|
|
40
|
+
share_count INTEGER DEFAULT 0,
|
|
41
|
+
questions_answered INTEGER DEFAULT 0,
|
|
42
|
+
onboarding_relevance BOOLEAN DEFAULT FALSE,
|
|
43
|
+
embedding_generated BOOLEAN DEFAULT FALSE,
|
|
44
|
+
semantic_keywords TEXT, -- Extracted concepts for hybrid search
|
|
45
|
+
synced BOOLEAN DEFAULT FALSE
|
|
46
|
+
)
|
|
47
|
+
`);
|
|
48
|
+
// Vector embeddings table for semantic search
|
|
49
|
+
await run(`
|
|
50
|
+
CREATE TABLE IF NOT EXISTS knowledge_embeddings (
|
|
51
|
+
entry_id TEXT PRIMARY KEY,
|
|
52
|
+
embedding BLOB, -- Serialized vector (1536 dimensions for Titan)
|
|
53
|
+
embedding_model TEXT DEFAULT 'amazon.titan-embed-text-v1',
|
|
54
|
+
dimensions INTEGER DEFAULT 1536,
|
|
55
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
56
|
+
FOREIGN KEY (entry_id) REFERENCES learning_entries(id) ON DELETE CASCADE
|
|
57
|
+
)
|
|
58
|
+
`);
|
|
59
|
+
// Productivity impact tracking
|
|
60
|
+
await run(`
|
|
61
|
+
CREATE TABLE IF NOT EXISTS productivity_impacts (
|
|
62
|
+
id TEXT PRIMARY KEY,
|
|
63
|
+
user_id TEXT NOT NULL,
|
|
64
|
+
team_id TEXT NOT NULL,
|
|
65
|
+
date DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
+
times_saved_minutes INTEGER DEFAULT 0,
|
|
67
|
+
duplicate_questions_avoided INTEGER DEFAULT 0,
|
|
68
|
+
knowledge_reused INTEGER DEFAULT 0,
|
|
69
|
+
expert_connections_made INTEGER DEFAULT 0,
|
|
70
|
+
onboarding_tasks_completed INTEGER DEFAULT 0,
|
|
71
|
+
estimated_cost_savings REAL DEFAULT 0,
|
|
72
|
+
productivity_increase REAL DEFAULT 0,
|
|
73
|
+
synced BOOLEAN DEFAULT FALSE
|
|
74
|
+
)
|
|
75
|
+
`);
|
|
76
|
+
// Sync queue for offline operations
|
|
77
|
+
await run(`
|
|
78
|
+
CREATE TABLE IF NOT EXISTS sync_queue (
|
|
79
|
+
id TEXT PRIMARY KEY,
|
|
80
|
+
operation TEXT NOT NULL, -- 'create', 'update', 'delete'
|
|
81
|
+
table_name TEXT NOT NULL,
|
|
82
|
+
record_id TEXT NOT NULL,
|
|
83
|
+
data TEXT, -- JSON data
|
|
84
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
85
|
+
synced BOOLEAN DEFAULT FALSE
|
|
86
|
+
)
|
|
87
|
+
`);
|
|
88
|
+
}
|
|
89
|
+
async createEntry(entry) {
|
|
90
|
+
const run = (0, util_1.promisify)(this.db.run.bind(this.db));
|
|
91
|
+
const id = `entry_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
92
|
+
await run(`
|
|
93
|
+
INSERT INTO learning_entries (
|
|
94
|
+
id, content, author_id, team_id, created_at, ai_topics,
|
|
95
|
+
expertise_level, impact_score, helpfulness_rating, time_saved_minutes,
|
|
96
|
+
view_count, share_count, questions_answered, onboarding_relevance
|
|
97
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
98
|
+
`, [
|
|
99
|
+
id,
|
|
100
|
+
entry.content,
|
|
101
|
+
entry.authorId,
|
|
102
|
+
entry.teamId,
|
|
103
|
+
entry.createdAt.toISOString(),
|
|
104
|
+
JSON.stringify(entry.aiTopics),
|
|
105
|
+
entry.expertiseLevel,
|
|
106
|
+
entry.impactScore,
|
|
107
|
+
entry.helpfulnessRating,
|
|
108
|
+
entry.timeSavedMinutes,
|
|
109
|
+
entry.viewCount,
|
|
110
|
+
entry.shareCount,
|
|
111
|
+
entry.questionsAnswered,
|
|
112
|
+
entry.onboardingRelevance ? 1 : 0
|
|
113
|
+
]);
|
|
114
|
+
return id;
|
|
115
|
+
}
|
|
116
|
+
async getEntries(limit = 50) {
|
|
117
|
+
const all = (0, util_1.promisify)(this.db.all.bind(this.db));
|
|
118
|
+
const rows = await all(`
|
|
119
|
+
SELECT * FROM learning_entries
|
|
120
|
+
ORDER BY created_at DESC
|
|
121
|
+
LIMIT ?
|
|
122
|
+
`, [limit]);
|
|
123
|
+
return rows.map(this.mapRowToEntry);
|
|
124
|
+
}
|
|
125
|
+
async searchEntries(query, limit = 50) {
|
|
126
|
+
const all = (0, util_1.promisify)(this.db.all.bind(this.db));
|
|
127
|
+
// Try the enhanced search first, fall back to basic search if column doesn't exist
|
|
128
|
+
try {
|
|
129
|
+
const rows = await all(`
|
|
130
|
+
SELECT * FROM learning_entries
|
|
131
|
+
WHERE content LIKE ? OR ai_topics LIKE ? OR semantic_keywords LIKE ?
|
|
132
|
+
ORDER BY created_at DESC
|
|
133
|
+
LIMIT ?
|
|
134
|
+
`, [`%${query}%`, `%${query}%`, `%${query}%`, limit]);
|
|
135
|
+
return rows.map(this.mapRowToEntry);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
// Fallback to basic search if semantic_keywords column doesn't exist
|
|
139
|
+
console.warn('Enhanced search failed, using basic search:', error);
|
|
140
|
+
const rows = await all(`
|
|
141
|
+
SELECT * FROM learning_entries
|
|
142
|
+
WHERE content LIKE ? OR ai_topics LIKE ?
|
|
143
|
+
ORDER BY created_at DESC
|
|
144
|
+
LIMIT ?
|
|
145
|
+
`, [`%${query}%`, `%${query}%`, limit]);
|
|
146
|
+
return rows.map(this.mapRowToEntry);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Store vector embedding for a knowledge entry
|
|
151
|
+
*/
|
|
152
|
+
async storeEmbedding(entryId, embedding, model = 'amazon.titan-embed-text-v1') {
|
|
153
|
+
const run = (0, util_1.promisify)(this.db.run.bind(this.db));
|
|
154
|
+
// Serialize embedding as Buffer
|
|
155
|
+
const embeddingBuffer = Buffer.from(new Float32Array(embedding).buffer);
|
|
156
|
+
await run(`
|
|
157
|
+
INSERT OR REPLACE INTO knowledge_embeddings (entry_id, embedding, embedding_model, dimensions)
|
|
158
|
+
VALUES (?, ?, ?, ?)
|
|
159
|
+
`, [entryId, embeddingBuffer, model, embedding.length]);
|
|
160
|
+
// Mark entry as having embedding generated
|
|
161
|
+
await run(`
|
|
162
|
+
UPDATE learning_entries SET embedding_generated = TRUE WHERE id = ?
|
|
163
|
+
`, [entryId]);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get embedding for a specific entry
|
|
167
|
+
*/
|
|
168
|
+
async getEmbedding(entryId) {
|
|
169
|
+
const get = (0, util_1.promisify)(this.db.get.bind(this.db));
|
|
170
|
+
const row = await get(`
|
|
171
|
+
SELECT embedding, dimensions FROM knowledge_embeddings WHERE entry_id = ?
|
|
172
|
+
`, [entryId]);
|
|
173
|
+
if (!row || !row.embedding) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
// Deserialize embedding from Buffer
|
|
177
|
+
const float32Array = new Float32Array(row.embedding.buffer);
|
|
178
|
+
return Array.from(float32Array);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get all embeddings for semantic search
|
|
182
|
+
*/
|
|
183
|
+
async getAllEmbeddings() {
|
|
184
|
+
const all = (0, util_1.promisify)(this.db.all.bind(this.db));
|
|
185
|
+
const rows = await all(`
|
|
186
|
+
SELECT entry_id, embedding, dimensions FROM knowledge_embeddings
|
|
187
|
+
`);
|
|
188
|
+
return rows.map((row) => ({
|
|
189
|
+
entryId: row.entry_id,
|
|
190
|
+
embedding: Array.from(new Float32Array(row.embedding.buffer))
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Semantic search using vector similarity
|
|
195
|
+
*/
|
|
196
|
+
async semanticSearch(queryEmbedding, limit = 20, threshold = 0.7) {
|
|
197
|
+
// Get all embeddings
|
|
198
|
+
const embeddings = await this.getAllEmbeddings();
|
|
199
|
+
if (embeddings.length === 0) {
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
// Calculate similarities (this would be optimized with a vector database in production)
|
|
203
|
+
const similarities = embeddings.map(item => ({
|
|
204
|
+
entryId: item.entryId,
|
|
205
|
+
similarity: this.cosineSimilarity(queryEmbedding, item.embedding)
|
|
206
|
+
}))
|
|
207
|
+
.filter(item => item.similarity >= threshold)
|
|
208
|
+
.sort((a, b) => b.similarity - a.similarity)
|
|
209
|
+
.slice(0, limit);
|
|
210
|
+
// Get the actual entries
|
|
211
|
+
const entryIds = similarities.map(s => s.entryId);
|
|
212
|
+
const entries = await this.getEntriesByIds(entryIds);
|
|
213
|
+
// Combine entries with similarity scores
|
|
214
|
+
return similarities.map(sim => ({
|
|
215
|
+
entry: entries.find(e => e.id === sim.entryId),
|
|
216
|
+
similarity: sim.similarity
|
|
217
|
+
})).filter(item => item.entry);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Hybrid search combining keyword and semantic search
|
|
221
|
+
*/
|
|
222
|
+
async hybridSearch(query, queryEmbedding, limit = 30) {
|
|
223
|
+
const keywordLimit = Math.floor(limit * 0.4); // 40% from keywords
|
|
224
|
+
const semanticLimit = Math.floor(limit * 0.6); // 60% from semantic
|
|
225
|
+
// Get keyword results
|
|
226
|
+
const keywordResults = await this.searchEntries(query, keywordLimit);
|
|
227
|
+
let semanticResults = [];
|
|
228
|
+
// Get semantic results if embedding provided
|
|
229
|
+
if (queryEmbedding) {
|
|
230
|
+
const semanticMatches = await this.semanticSearch(queryEmbedding, semanticLimit, 0.6); // Lower threshold for better recall
|
|
231
|
+
semanticResults = semanticMatches.map(match => match.entry);
|
|
232
|
+
}
|
|
233
|
+
// Combine and deduplicate results
|
|
234
|
+
const combined = [...keywordResults];
|
|
235
|
+
const existingIds = new Set(keywordResults.map(e => e.id));
|
|
236
|
+
semanticResults.forEach(entry => {
|
|
237
|
+
if (!existingIds.has(entry.id)) {
|
|
238
|
+
combined.push(entry);
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
return combined.slice(0, limit);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get entries by IDs maintaining order
|
|
245
|
+
*/
|
|
246
|
+
async getEntriesByIds(ids) {
|
|
247
|
+
if (ids.length === 0)
|
|
248
|
+
return [];
|
|
249
|
+
const all = (0, util_1.promisify)(this.db.all.bind(this.db));
|
|
250
|
+
const placeholders = ids.map(() => '?').join(',');
|
|
251
|
+
const rows = await all(`
|
|
252
|
+
SELECT * FROM learning_entries WHERE id IN (${placeholders})
|
|
253
|
+
`, ids);
|
|
254
|
+
const entryMap = new Map(rows.map(row => [row.id, this.mapRowToEntry(row)]));
|
|
255
|
+
// Return entries in the same order as requested IDs
|
|
256
|
+
return ids.map(id => entryMap.get(id)).filter(Boolean);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Calculate cosine similarity between two vectors
|
|
260
|
+
*/
|
|
261
|
+
cosineSimilarity(a, b) {
|
|
262
|
+
if (a.length !== b.length || a.length === 0)
|
|
263
|
+
return 0;
|
|
264
|
+
const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);
|
|
265
|
+
const magnitudeA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));
|
|
266
|
+
const magnitudeB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));
|
|
267
|
+
if (magnitudeA === 0 || magnitudeB === 0)
|
|
268
|
+
return 0;
|
|
269
|
+
return dotProduct / (magnitudeA * magnitudeB);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get entries without embeddings for batch processing
|
|
273
|
+
*/
|
|
274
|
+
async getEntriesWithoutEmbeddings(limit = 50) {
|
|
275
|
+
const all = (0, util_1.promisify)(this.db.all.bind(this.db));
|
|
276
|
+
const rows = await all(`
|
|
277
|
+
SELECT * FROM learning_entries
|
|
278
|
+
WHERE embedding_generated = FALSE
|
|
279
|
+
ORDER BY created_at DESC
|
|
280
|
+
LIMIT ?
|
|
281
|
+
`, [limit]);
|
|
282
|
+
return rows.map(this.mapRowToEntry);
|
|
283
|
+
}
|
|
284
|
+
async recordProductivityImpact(impact) {
|
|
285
|
+
const run = (0, util_1.promisify)(this.db.run.bind(this.db));
|
|
286
|
+
const id = `impact_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
287
|
+
await run(`
|
|
288
|
+
INSERT INTO productivity_impacts (
|
|
289
|
+
id, user_id, team_id, times_saved_minutes, duplicate_questions_avoided,
|
|
290
|
+
knowledge_reused, expert_connections_made, onboarding_tasks_completed,
|
|
291
|
+
estimated_cost_savings, productivity_increase
|
|
292
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
293
|
+
`, [
|
|
294
|
+
id,
|
|
295
|
+
impact.userId,
|
|
296
|
+
impact.teamId,
|
|
297
|
+
impact.timesSavedMinutes,
|
|
298
|
+
impact.duplicateQuestionsAvoided,
|
|
299
|
+
impact.knowledgeReused,
|
|
300
|
+
impact.expertConnectionsMade,
|
|
301
|
+
impact.onboardingTasksCompleted,
|
|
302
|
+
impact.estimatedCostSavings,
|
|
303
|
+
impact.productivityIncrease
|
|
304
|
+
]);
|
|
305
|
+
}
|
|
306
|
+
mapRowToEntry(row) {
|
|
307
|
+
return {
|
|
308
|
+
id: row.id,
|
|
309
|
+
content: row.content,
|
|
310
|
+
authorId: row.author_id,
|
|
311
|
+
teamId: row.team_id,
|
|
312
|
+
createdAt: new Date(row.created_at),
|
|
313
|
+
aiTopics: JSON.parse(row.ai_topics || '[]'),
|
|
314
|
+
expertiseLevel: row.expertise_level,
|
|
315
|
+
impactScore: row.impact_score,
|
|
316
|
+
helpfulnessRating: row.helpfulness_rating,
|
|
317
|
+
timeSavedMinutes: row.time_saved_minutes,
|
|
318
|
+
viewCount: row.view_count,
|
|
319
|
+
shareCount: row.share_count,
|
|
320
|
+
questionsAnswered: row.questions_answered,
|
|
321
|
+
onboardingRelevance: Boolean(row.onboarding_relevance)
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
async close() {
|
|
325
|
+
return new Promise((resolve, reject) => {
|
|
326
|
+
this.db.close((err) => {
|
|
327
|
+
if (err)
|
|
328
|
+
reject(err);
|
|
329
|
+
else
|
|
330
|
+
resolve();
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
exports.SQLiteDatabase = SQLiteDatabase;
|
|
336
|
+
exports.database = new SQLiteDatabase();
|
|
337
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/database/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/lambda/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAwEzE,eAAO,MAAM,OAAO,GAAU,OAAO,oBAAoB,KAAG,OAAO,CAAC,qBAAqB,CAgIxF,CAAC"}
|