@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 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/database/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
interface LearningEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
teamId: string;
|
|
4
|
+
authorId: string;
|
|
5
|
+
content: string;
|
|
6
|
+
createdAt: Date;
|
|
7
|
+
aiTopics: string[];
|
|
8
|
+
expertiseLevel: 'beginner' | 'intermediate' | 'expert';
|
|
9
|
+
impactScore: number;
|
|
10
|
+
helpfulnessRating: number;
|
|
11
|
+
timeSavedMinutes: number;
|
|
12
|
+
viewCount: number;
|
|
13
|
+
shareCount: number;
|
|
14
|
+
questionsAnswered: number;
|
|
15
|
+
onboardingRelevance: boolean;
|
|
16
|
+
visibility: 'private' | 'team' | 'public';
|
|
17
|
+
}
|
|
18
|
+
interface ProductivityImpact {
|
|
19
|
+
id: string;
|
|
20
|
+
userId: string;
|
|
21
|
+
teamId: string;
|
|
22
|
+
date: Date;
|
|
23
|
+
timesSavedMinutes: number;
|
|
24
|
+
duplicateQuestionsAvoided: number;
|
|
25
|
+
knowledgeReused: number;
|
|
26
|
+
expertConnectionsMade: number;
|
|
27
|
+
onboardingTasksCompleted: number;
|
|
28
|
+
estimatedCostSavings: number;
|
|
29
|
+
productivityIncreasePercent: number;
|
|
30
|
+
activityType: string;
|
|
31
|
+
relatedEntryId?: string;
|
|
32
|
+
}
|
|
33
|
+
interface ExpertConnection {
|
|
34
|
+
id: string;
|
|
35
|
+
teamId: string;
|
|
36
|
+
seekerId: string;
|
|
37
|
+
expertId: string;
|
|
38
|
+
topic: string;
|
|
39
|
+
question?: string;
|
|
40
|
+
relatedEntryId?: string;
|
|
41
|
+
connectionMethod: 'ai_suggestion' | 'manual_search' | 'recommendation';
|
|
42
|
+
wasHelpful?: boolean;
|
|
43
|
+
feedbackRating?: number;
|
|
44
|
+
feedbackText?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class PostgreSQLService {
|
|
47
|
+
private client;
|
|
48
|
+
private secretsClient;
|
|
49
|
+
constructor();
|
|
50
|
+
connect(secretArn?: string): Promise<void>;
|
|
51
|
+
disconnect(): Promise<void>;
|
|
52
|
+
private ensureConnected;
|
|
53
|
+
createLearningEntry(entry: Omit<LearningEntry, 'id' | 'createdAt'>): Promise<LearningEntry>;
|
|
54
|
+
getLearningEntries(teamId: string, filters?: {
|
|
55
|
+
authorId?: string;
|
|
56
|
+
topics?: string[];
|
|
57
|
+
visibility?: string;
|
|
58
|
+
limit?: number;
|
|
59
|
+
offset?: number;
|
|
60
|
+
}): Promise<LearningEntry[]>;
|
|
61
|
+
searchLearningEntries(teamId: string, searchQuery: string, limit?: number): Promise<LearningEntry[]>;
|
|
62
|
+
recordProductivityImpact(impact: Omit<ProductivityImpact, 'id'>): Promise<ProductivityImpact>;
|
|
63
|
+
getProductivityMetrics(teamId: string, startDate: Date, endDate: Date): Promise<{
|
|
64
|
+
totalTimeSaved: number;
|
|
65
|
+
totalCostSavings: number;
|
|
66
|
+
totalConnections: number;
|
|
67
|
+
avgProductivityIncrease: number;
|
|
68
|
+
}>;
|
|
69
|
+
createExpertConnection(connection: Omit<ExpertConnection, 'id'>): Promise<ExpertConnection>;
|
|
70
|
+
findExperts(teamId: string, topic: string, limit?: number): Promise<Array<{
|
|
71
|
+
userId: string;
|
|
72
|
+
name: string;
|
|
73
|
+
expertiseScore: number;
|
|
74
|
+
entryCount: number;
|
|
75
|
+
lastContribution: Date;
|
|
76
|
+
}>>;
|
|
77
|
+
createEntryVersion(entryId: string, newContent: string, authorId: string): Promise<{
|
|
78
|
+
id: string;
|
|
79
|
+
version: number;
|
|
80
|
+
}>;
|
|
81
|
+
getEntryVersionHistory(entryId: string): Promise<Array<{
|
|
82
|
+
id: string;
|
|
83
|
+
version: number;
|
|
84
|
+
content: string;
|
|
85
|
+
authorId: string;
|
|
86
|
+
createdAt: Date;
|
|
87
|
+
}>>;
|
|
88
|
+
healthCheck(): Promise<boolean>;
|
|
89
|
+
runMigration(migrationSql: string): Promise<void>;
|
|
90
|
+
}
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=postgresql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql.d.ts","sourceRoot":"","sources":["../../src/database/postgresql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PostgreSQLService = void 0;
|
|
4
|
+
const pg_1 = require("pg");
|
|
5
|
+
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
6
|
+
class PostgreSQLService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.client = null;
|
|
9
|
+
this.secretsClient = new client_secrets_manager_1.SecretsManagerClient({});
|
|
10
|
+
}
|
|
11
|
+
async connect(secretArn) {
|
|
12
|
+
try {
|
|
13
|
+
let config;
|
|
14
|
+
if (secretArn) {
|
|
15
|
+
// Production: Get credentials from AWS Secrets Manager
|
|
16
|
+
const secretResponse = await this.secretsClient.send(new client_secrets_manager_1.GetSecretValueCommand({ SecretId: secretArn }));
|
|
17
|
+
if (!secretResponse.SecretString) {
|
|
18
|
+
throw new Error('No secret string found');
|
|
19
|
+
}
|
|
20
|
+
const secret = JSON.parse(secretResponse.SecretString);
|
|
21
|
+
config = {
|
|
22
|
+
host: secret.host,
|
|
23
|
+
port: secret.port || 5432,
|
|
24
|
+
database: secret.dbname,
|
|
25
|
+
username: secret.username,
|
|
26
|
+
password: secret.password,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Development: Use environment variables or defaults
|
|
31
|
+
config = {
|
|
32
|
+
host: process.env.DB_HOST || 'localhost',
|
|
33
|
+
port: parseInt(process.env.DB_PORT || '5432'),
|
|
34
|
+
database: process.env.DB_NAME || 'today_competition',
|
|
35
|
+
username: process.env.DB_USER || 'postgres',
|
|
36
|
+
password: process.env.DB_PASSWORD || 'password',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
this.client = new pg_1.Client(config);
|
|
40
|
+
await this.client.connect();
|
|
41
|
+
console.log('Connected to PostgreSQL database');
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error('Failed to connect to PostgreSQL:', error);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async disconnect() {
|
|
49
|
+
if (this.client) {
|
|
50
|
+
await this.client.end();
|
|
51
|
+
this.client = null;
|
|
52
|
+
console.log('Disconnected from PostgreSQL database');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ensureConnected() {
|
|
56
|
+
if (!this.client) {
|
|
57
|
+
throw new Error('Database not connected. Call connect() first.');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Learning Entries Operations
|
|
61
|
+
async createLearningEntry(entry) {
|
|
62
|
+
this.ensureConnected();
|
|
63
|
+
const query = `
|
|
64
|
+
INSERT INTO learning_entries (
|
|
65
|
+
team_id, author_id, content, ai_topics, expertise_level,
|
|
66
|
+
impact_score, helpfulness_rating, time_saved_minutes,
|
|
67
|
+
view_count, share_count, questions_answered,
|
|
68
|
+
onboarding_relevance, visibility
|
|
69
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
|
|
70
|
+
RETURNING id, created_at
|
|
71
|
+
`;
|
|
72
|
+
const values = [
|
|
73
|
+
entry.teamId,
|
|
74
|
+
entry.authorId,
|
|
75
|
+
entry.content,
|
|
76
|
+
entry.aiTopics,
|
|
77
|
+
entry.expertiseLevel,
|
|
78
|
+
entry.impactScore,
|
|
79
|
+
entry.helpfulnessRating,
|
|
80
|
+
entry.timeSavedMinutes,
|
|
81
|
+
entry.viewCount,
|
|
82
|
+
entry.shareCount,
|
|
83
|
+
entry.questionsAnswered,
|
|
84
|
+
entry.onboardingRelevance,
|
|
85
|
+
entry.visibility,
|
|
86
|
+
];
|
|
87
|
+
const result = await this.client.query(query, values);
|
|
88
|
+
const row = result.rows[0];
|
|
89
|
+
return {
|
|
90
|
+
...entry,
|
|
91
|
+
id: row.id,
|
|
92
|
+
createdAt: row.created_at,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async getLearningEntries(teamId, filters) {
|
|
96
|
+
this.ensureConnected();
|
|
97
|
+
let query = `
|
|
98
|
+
SELECT id, team_id, author_id, content, created_at, updated_at,
|
|
99
|
+
ai_topics, expertise_level, impact_score, helpfulness_rating,
|
|
100
|
+
time_saved_minutes, view_count, share_count, questions_answered,
|
|
101
|
+
onboarding_relevance, visibility
|
|
102
|
+
FROM learning_entries
|
|
103
|
+
WHERE team_id = $1
|
|
104
|
+
`;
|
|
105
|
+
const values = [teamId];
|
|
106
|
+
let paramCount = 1;
|
|
107
|
+
if (filters?.authorId) {
|
|
108
|
+
paramCount++;
|
|
109
|
+
query += ` AND author_id = $${paramCount}`;
|
|
110
|
+
values.push(filters.authorId);
|
|
111
|
+
}
|
|
112
|
+
if (filters?.topics && filters.topics.length > 0) {
|
|
113
|
+
paramCount++;
|
|
114
|
+
query += ` AND ai_topics && $${paramCount}`;
|
|
115
|
+
values.push(filters.topics);
|
|
116
|
+
}
|
|
117
|
+
if (filters?.visibility) {
|
|
118
|
+
paramCount++;
|
|
119
|
+
query += ` AND visibility = $${paramCount}`;
|
|
120
|
+
values.push(filters.visibility);
|
|
121
|
+
}
|
|
122
|
+
query += ` ORDER BY created_at DESC`;
|
|
123
|
+
if (filters?.limit) {
|
|
124
|
+
paramCount++;
|
|
125
|
+
query += ` LIMIT $${paramCount}`;
|
|
126
|
+
values.push(filters.limit);
|
|
127
|
+
}
|
|
128
|
+
if (filters?.offset) {
|
|
129
|
+
paramCount++;
|
|
130
|
+
query += ` OFFSET $${paramCount}`;
|
|
131
|
+
values.push(filters.offset);
|
|
132
|
+
}
|
|
133
|
+
const result = await this.client.query(query, values);
|
|
134
|
+
return result.rows.map((row) => ({
|
|
135
|
+
id: row.id,
|
|
136
|
+
teamId: row.team_id,
|
|
137
|
+
authorId: row.author_id,
|
|
138
|
+
content: row.content,
|
|
139
|
+
createdAt: row.created_at,
|
|
140
|
+
aiTopics: row.ai_topics || [],
|
|
141
|
+
expertiseLevel: row.expertise_level,
|
|
142
|
+
impactScore: row.impact_score,
|
|
143
|
+
helpfulnessRating: parseFloat(row.helpfulness_rating) || 0,
|
|
144
|
+
timeSavedMinutes: row.time_saved_minutes,
|
|
145
|
+
viewCount: row.view_count,
|
|
146
|
+
shareCount: row.share_count,
|
|
147
|
+
questionsAnswered: row.questions_answered,
|
|
148
|
+
onboardingRelevance: row.onboarding_relevance,
|
|
149
|
+
visibility: row.visibility,
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
async searchLearningEntries(teamId, searchQuery, limit = 20) {
|
|
153
|
+
this.ensureConnected();
|
|
154
|
+
const query = `
|
|
155
|
+
SELECT id, team_id, author_id, content, created_at, updated_at,
|
|
156
|
+
ai_topics, expertise_level, impact_score, helpfulness_rating,
|
|
157
|
+
time_saved_minutes, view_count, share_count, questions_answered,
|
|
158
|
+
onboarding_relevance, visibility,
|
|
159
|
+
ts_rank(content_tsvector, plainto_tsquery('english', $2)) as rank
|
|
160
|
+
FROM learning_entries
|
|
161
|
+
WHERE team_id = $1
|
|
162
|
+
AND content_tsvector @@ plainto_tsquery('english', $2)
|
|
163
|
+
ORDER BY rank DESC, created_at DESC
|
|
164
|
+
LIMIT $3
|
|
165
|
+
`;
|
|
166
|
+
const result = await this.client.query(query, [teamId, searchQuery, limit]);
|
|
167
|
+
return result.rows.map((row) => ({
|
|
168
|
+
id: row.id,
|
|
169
|
+
teamId: row.team_id,
|
|
170
|
+
authorId: row.author_id,
|
|
171
|
+
content: row.content,
|
|
172
|
+
createdAt: row.created_at,
|
|
173
|
+
aiTopics: row.ai_topics || [],
|
|
174
|
+
expertiseLevel: row.expertise_level,
|
|
175
|
+
impactScore: row.impact_score,
|
|
176
|
+
helpfulnessRating: parseFloat(row.helpfulness_rating) || 0,
|
|
177
|
+
timeSavedMinutes: row.time_saved_minutes,
|
|
178
|
+
viewCount: row.view_count,
|
|
179
|
+
shareCount: row.share_count,
|
|
180
|
+
questionsAnswered: row.questions_answered,
|
|
181
|
+
onboardingRelevance: row.onboarding_relevance,
|
|
182
|
+
visibility: row.visibility,
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
// Productivity Impact Operations
|
|
186
|
+
async recordProductivityImpact(impact) {
|
|
187
|
+
this.ensureConnected();
|
|
188
|
+
const query = `
|
|
189
|
+
INSERT INTO productivity_impacts (
|
|
190
|
+
user_id, team_id, date, times_saved_minutes, duplicate_questions_avoided,
|
|
191
|
+
knowledge_reused, expert_connections_made, onboarding_tasks_completed,
|
|
192
|
+
estimated_cost_savings, productivity_increase_percent, activity_type, related_entry_id
|
|
193
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
|
|
194
|
+
ON CONFLICT (user_id, date, activity_type, related_entry_id)
|
|
195
|
+
DO UPDATE SET
|
|
196
|
+
times_saved_minutes = productivity_impacts.times_saved_minutes + EXCLUDED.times_saved_minutes,
|
|
197
|
+
duplicate_questions_avoided = productivity_impacts.duplicate_questions_avoided + EXCLUDED.duplicate_questions_avoided,
|
|
198
|
+
knowledge_reused = productivity_impacts.knowledge_reused + EXCLUDED.knowledge_reused,
|
|
199
|
+
expert_connections_made = productivity_impacts.expert_connections_made + EXCLUDED.expert_connections_made,
|
|
200
|
+
onboarding_tasks_completed = productivity_impacts.onboarding_tasks_completed + EXCLUDED.onboarding_tasks_completed,
|
|
201
|
+
estimated_cost_savings = productivity_impacts.estimated_cost_savings + EXCLUDED.estimated_cost_savings
|
|
202
|
+
RETURNING id
|
|
203
|
+
`;
|
|
204
|
+
const values = [
|
|
205
|
+
impact.userId,
|
|
206
|
+
impact.teamId,
|
|
207
|
+
impact.date,
|
|
208
|
+
impact.timesSavedMinutes,
|
|
209
|
+
impact.duplicateQuestionsAvoided,
|
|
210
|
+
impact.knowledgeReused,
|
|
211
|
+
impact.expertConnectionsMade,
|
|
212
|
+
impact.onboardingTasksCompleted,
|
|
213
|
+
impact.estimatedCostSavings,
|
|
214
|
+
impact.productivityIncreasePercent,
|
|
215
|
+
impact.activityType,
|
|
216
|
+
impact.relatedEntryId,
|
|
217
|
+
];
|
|
218
|
+
const result = await this.client.query(query, values);
|
|
219
|
+
const row = result.rows[0];
|
|
220
|
+
return {
|
|
221
|
+
...impact,
|
|
222
|
+
id: row.id,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
async getProductivityMetrics(teamId, startDate, endDate) {
|
|
226
|
+
this.ensureConnected();
|
|
227
|
+
const query = `
|
|
228
|
+
SELECT
|
|
229
|
+
SUM(times_saved_minutes) as total_time_saved,
|
|
230
|
+
SUM(estimated_cost_savings) as total_cost_savings,
|
|
231
|
+
SUM(expert_connections_made) as total_connections,
|
|
232
|
+
AVG(productivity_increase_percent) as avg_productivity_increase
|
|
233
|
+
FROM productivity_impacts
|
|
234
|
+
WHERE team_id = $1 AND date BETWEEN $2 AND $3
|
|
235
|
+
`;
|
|
236
|
+
const result = await this.client.query(query, [teamId, startDate, endDate]);
|
|
237
|
+
const row = result.rows[0];
|
|
238
|
+
return {
|
|
239
|
+
totalTimeSaved: parseInt(row.total_time_saved) || 0,
|
|
240
|
+
totalCostSavings: parseFloat(row.total_cost_savings) || 0,
|
|
241
|
+
totalConnections: parseInt(row.total_connections) || 0,
|
|
242
|
+
avgProductivityIncrease: parseFloat(row.avg_productivity_increase) || 0,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// Expert Connection Operations
|
|
246
|
+
async createExpertConnection(connection) {
|
|
247
|
+
this.ensureConnected();
|
|
248
|
+
const query = `
|
|
249
|
+
INSERT INTO expert_connections (
|
|
250
|
+
team_id, seeker_id, expert_id, topic, question,
|
|
251
|
+
related_entry_id, connection_method
|
|
252
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7)
|
|
253
|
+
RETURNING id
|
|
254
|
+
`;
|
|
255
|
+
const values = [
|
|
256
|
+
connection.teamId,
|
|
257
|
+
connection.seekerId,
|
|
258
|
+
connection.expertId,
|
|
259
|
+
connection.topic,
|
|
260
|
+
connection.question,
|
|
261
|
+
connection.relatedEntryId,
|
|
262
|
+
connection.connectionMethod,
|
|
263
|
+
];
|
|
264
|
+
const result = await this.client.query(query, values);
|
|
265
|
+
const row = result.rows[0];
|
|
266
|
+
return {
|
|
267
|
+
...connection,
|
|
268
|
+
id: row.id,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
async findExperts(teamId, topic, limit = 5) {
|
|
272
|
+
this.ensureConnected();
|
|
273
|
+
const query = `
|
|
274
|
+
SELECT
|
|
275
|
+
ee.user_id,
|
|
276
|
+
ee.name,
|
|
277
|
+
ee.avg_impact_score as expertise_score,
|
|
278
|
+
ee.entry_count,
|
|
279
|
+
ee.last_contribution
|
|
280
|
+
FROM expert_expertise ee
|
|
281
|
+
WHERE ee.team_id = $1
|
|
282
|
+
AND ee.topic = $2
|
|
283
|
+
ORDER BY ee.avg_impact_score DESC, ee.entry_count DESC
|
|
284
|
+
LIMIT $3
|
|
285
|
+
`;
|
|
286
|
+
const result = await this.client.query(query, [teamId, topic, limit]);
|
|
287
|
+
return result.rows.map((row) => ({
|
|
288
|
+
userId: row.user_id,
|
|
289
|
+
name: row.name,
|
|
290
|
+
expertiseScore: parseFloat(row.expertise_score) || 0,
|
|
291
|
+
entryCount: row.entry_count,
|
|
292
|
+
lastContribution: row.last_contribution,
|
|
293
|
+
}));
|
|
294
|
+
}
|
|
295
|
+
// Version History Operations
|
|
296
|
+
async createEntryVersion(entryId, newContent, authorId) {
|
|
297
|
+
this.ensureConnected();
|
|
298
|
+
// Get current version
|
|
299
|
+
const currentVersionQuery = `
|
|
300
|
+
SELECT version FROM learning_entries WHERE id = $1
|
|
301
|
+
`;
|
|
302
|
+
const currentResult = await this.client.query(currentVersionQuery, [entryId]);
|
|
303
|
+
const currentVersion = currentResult.rows[0]?.version || 0;
|
|
304
|
+
// Create new version
|
|
305
|
+
const insertQuery = `
|
|
306
|
+
INSERT INTO learning_entries (
|
|
307
|
+
team_id, author_id, content, parent_entry_id, version,
|
|
308
|
+
ai_topics, expertise_level, impact_score, visibility
|
|
309
|
+
)
|
|
310
|
+
SELECT team_id, $2, $3, $1, $4,
|
|
311
|
+
ai_topics, expertise_level, impact_score, visibility
|
|
312
|
+
FROM learning_entries
|
|
313
|
+
WHERE id = $1
|
|
314
|
+
RETURNING id, version
|
|
315
|
+
`;
|
|
316
|
+
const newVersion = currentVersion + 1;
|
|
317
|
+
const result = await this.client.query(insertQuery, [entryId, authorId, newContent, newVersion]);
|
|
318
|
+
const row = result.rows[0];
|
|
319
|
+
return {
|
|
320
|
+
id: row.id,
|
|
321
|
+
version: row.version,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
async getEntryVersionHistory(entryId) {
|
|
325
|
+
this.ensureConnected();
|
|
326
|
+
const query = `
|
|
327
|
+
WITH RECURSIVE version_tree AS (
|
|
328
|
+
-- Base case: find the root entry
|
|
329
|
+
SELECT id, content, author_id, created_at, version, parent_entry_id
|
|
330
|
+
FROM learning_entries
|
|
331
|
+
WHERE id = $1 OR parent_entry_id = $1
|
|
332
|
+
|
|
333
|
+
UNION ALL
|
|
334
|
+
|
|
335
|
+
-- Recursive case: find all versions
|
|
336
|
+
SELECT le.id, le.content, le.author_id, le.created_at, le.version, le.parent_entry_id
|
|
337
|
+
FROM learning_entries le
|
|
338
|
+
INNER JOIN version_tree vt ON le.parent_entry_id = vt.id
|
|
339
|
+
)
|
|
340
|
+
SELECT id, content, author_id, created_at, version
|
|
341
|
+
FROM version_tree
|
|
342
|
+
ORDER BY version ASC
|
|
343
|
+
`;
|
|
344
|
+
const result = await this.client.query(query, [entryId]);
|
|
345
|
+
return result.rows.map((row) => ({
|
|
346
|
+
id: row.id,
|
|
347
|
+
version: row.version,
|
|
348
|
+
content: row.content,
|
|
349
|
+
authorId: row.author_id,
|
|
350
|
+
createdAt: row.created_at,
|
|
351
|
+
}));
|
|
352
|
+
}
|
|
353
|
+
// Health check
|
|
354
|
+
async healthCheck() {
|
|
355
|
+
try {
|
|
356
|
+
this.ensureConnected();
|
|
357
|
+
const result = await this.client.query('SELECT 1');
|
|
358
|
+
return result.rows.length > 0;
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
console.error('Database health check failed:', error);
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Migration support
|
|
366
|
+
async runMigration(migrationSql) {
|
|
367
|
+
this.ensureConnected();
|
|
368
|
+
try {
|
|
369
|
+
await this.client.query('BEGIN');
|
|
370
|
+
await this.client.query(migrationSql);
|
|
371
|
+
await this.client.query('COMMIT');
|
|
372
|
+
console.log('Migration completed successfully');
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
await this.client.query('ROLLBACK');
|
|
376
|
+
console.error('Migration failed:', error);
|
|
377
|
+
throw error;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
exports.PostgreSQLService = PostgreSQLService;
|
|
382
|
+
//# sourceMappingURL=postgresql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql.js","sourceRoot":"","sources":["../../src/database/postgresql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CompetitionLearningEntry, ProductivityImpact } from '../types';
|
|
2
|
+
export declare class SQLiteDatabase {
|
|
3
|
+
private db;
|
|
4
|
+
private dbPath;
|
|
5
|
+
constructor(dbPath?: string);
|
|
6
|
+
private ensureDirectoryExists;
|
|
7
|
+
private initializeTables;
|
|
8
|
+
createEntry(entry: Omit<CompetitionLearningEntry, 'id'>): Promise<string>;
|
|
9
|
+
getEntries(limit?: number): Promise<CompetitionLearningEntry[]>;
|
|
10
|
+
searchEntries(query: string, limit?: number): Promise<CompetitionLearningEntry[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Store vector embedding for a knowledge entry
|
|
13
|
+
*/
|
|
14
|
+
storeEmbedding(entryId: string, embedding: number[], model?: string): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Get embedding for a specific entry
|
|
17
|
+
*/
|
|
18
|
+
getEmbedding(entryId: string): Promise<number[] | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Get all embeddings for semantic search
|
|
21
|
+
*/
|
|
22
|
+
getAllEmbeddings(): Promise<Array<{
|
|
23
|
+
entryId: string;
|
|
24
|
+
embedding: number[];
|
|
25
|
+
}>>;
|
|
26
|
+
/**
|
|
27
|
+
* Semantic search using vector similarity
|
|
28
|
+
*/
|
|
29
|
+
semanticSearch(queryEmbedding: number[], limit?: number, threshold?: number): Promise<Array<{
|
|
30
|
+
entry: CompetitionLearningEntry;
|
|
31
|
+
similarity: number;
|
|
32
|
+
}>>;
|
|
33
|
+
/**
|
|
34
|
+
* Hybrid search combining keyword and semantic search
|
|
35
|
+
*/
|
|
36
|
+
hybridSearch(query: string, queryEmbedding?: number[], limit?: number): Promise<CompetitionLearningEntry[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Get entries by IDs maintaining order
|
|
39
|
+
*/
|
|
40
|
+
private getEntriesByIds;
|
|
41
|
+
/**
|
|
42
|
+
* Calculate cosine similarity between two vectors
|
|
43
|
+
*/
|
|
44
|
+
private cosineSimilarity;
|
|
45
|
+
/**
|
|
46
|
+
* Get entries without embeddings for batch processing
|
|
47
|
+
*/
|
|
48
|
+
getEntriesWithoutEmbeddings(limit?: number): Promise<CompetitionLearningEntry[]>;
|
|
49
|
+
recordProductivityImpact(impact: Omit<ProductivityImpact, 'date'>): Promise<void>;
|
|
50
|
+
private mapRowToEntry;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
export declare const database: SQLiteDatabase;
|
|
54
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/database/sqlite.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAmBxE,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAO3B,OAAO,CAAC,qBAAqB;YAOf,gBAAgB;IAsEjB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BzE,UAAU,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAYnE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IA2BlG;;OAEG;IACU,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAqC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9H;;OAEG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAgBpE;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC,CAAC;IAavF;;OAEG;IACU,cAAc,CACzB,cAAc,EAAE,MAAM,EAAE,EACxB,KAAK,GAAE,MAAW,EAClB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,KAAK,CAAC;QAAC,KAAK,EAAE,wBAAwB,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IA4BxE;;OAEG;IACU,YAAY,CACvB,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,wBAAwB,EAAE,CAAC;IA4BtC;;OAEG;YACW,eAAe;IAgB7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACU,2BAA2B,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAapF,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9F,OAAO,CAAC,aAAa;IAmBR,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQpC;AAED,eAAO,MAAM,QAAQ,gBAAuB,CAAC"}
|