paper-manager 0.1.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/dist/ai/embed.d.ts +3 -0
  4. package/dist/ai/embed.js +13 -0
  5. package/dist/ai/embed.js.map +1 -0
  6. package/dist/ai/index.d.ts +2 -0
  7. package/dist/ai/index.js +3 -0
  8. package/dist/ai/index.js.map +1 -0
  9. package/dist/ai/provider.d.ts +3 -0
  10. package/dist/ai/provider.js +9 -0
  11. package/dist/ai/provider.js.map +1 -0
  12. package/dist/commands/config.d.ts +2 -0
  13. package/dist/commands/config.js +57 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/knowledge-base.d.ts +2 -0
  16. package/dist/commands/knowledge-base.js +152 -0
  17. package/dist/commands/knowledge-base.js.map +1 -0
  18. package/dist/commands/literature.d.ts +2 -0
  19. package/dist/commands/literature.js +302 -0
  20. package/dist/commands/literature.js.map +1 -0
  21. package/dist/config/index.d.ts +38 -0
  22. package/dist/config/index.js +107 -0
  23. package/dist/config/index.js.map +1 -0
  24. package/dist/db/index.d.ts +9 -0
  25. package/dist/db/index.js +76 -0
  26. package/dist/db/index.js.map +1 -0
  27. package/dist/db/operations/knowledge-bases.d.ts +10 -0
  28. package/dist/db/operations/knowledge-bases.js +25 -0
  29. package/dist/db/operations/knowledge-bases.js.map +1 -0
  30. package/dist/db/operations/literatures.d.ts +9 -0
  31. package/dist/db/operations/literatures.js +87 -0
  32. package/dist/db/operations/literatures.js.map +1 -0
  33. package/dist/db/project/knowledge-bases.d.ts +9 -0
  34. package/dist/db/project/knowledge-bases.js +15 -0
  35. package/dist/db/project/knowledge-bases.js.map +1 -0
  36. package/dist/db/project/literatures.d.ts +8 -0
  37. package/dist/db/project/literatures.js +24 -0
  38. package/dist/db/project/literatures.js.map +1 -0
  39. package/dist/db/schema.d.ts +2 -0
  40. package/dist/db/schema.js +26 -0
  41. package/dist/db/schema.js.map +1 -0
  42. package/dist/db/user/knowledge-bases.d.ts +9 -0
  43. package/dist/db/user/knowledge-bases.js +15 -0
  44. package/dist/db/user/knowledge-bases.js.map +1 -0
  45. package/dist/db/user/literatures.d.ts +8 -0
  46. package/dist/db/user/literatures.js +24 -0
  47. package/dist/db/user/literatures.js.map +1 -0
  48. package/dist/index.d.ts +2 -0
  49. package/dist/index.js +12 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/pdf/extractor.d.ts +2 -0
  52. package/dist/pdf/extractor.js +6 -0
  53. package/dist/pdf/extractor.js.map +1 -0
  54. package/dist/types/index.d.ts +74 -0
  55. package/dist/types/index.js +45 -0
  56. package/dist/types/index.js.map +1 -0
  57. package/dist/vector-store/embeddings.d.ts +8 -0
  58. package/dist/vector-store/embeddings.js +16 -0
  59. package/dist/vector-store/embeddings.js.map +1 -0
  60. package/dist/vector-store/index.d.ts +6 -0
  61. package/dist/vector-store/index.js +17 -0
  62. package/dist/vector-store/index.js.map +1 -0
  63. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literature.js","sourceRoot":"","sources":["../../src/commands/literature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import * as z from "zod";
2
+ import type { EmbeddingModelConfig } from '../types/index.js';
3
+ export declare function getUserDataDir(): string;
4
+ export declare function getProjectDataDir(): string;
5
+ export declare function getPdfDir(base: string): string;
6
+ export declare function getVectorStoreDir(base: string): string;
7
+ declare const configSchemas: {
8
+ readonly embeddingModels: z.ZodRecord<z.ZodString, z.ZodObject<{
9
+ provider: z.ZodEnum<{
10
+ openai: "openai";
11
+ }>;
12
+ model: z.ZodString;
13
+ baseUrl: z.ZodOptional<z.ZodURL>;
14
+ apiKey: z.ZodString;
15
+ dimensions: z.ZodNumber;
16
+ }, z.core.$strip>>;
17
+ readonly defaultEmbeddingModelId: z.ZodString;
18
+ };
19
+ type ConfigKeyTypeMap = {
20
+ [K in keyof typeof configSchemas]: z.infer<(typeof configSchemas)[K]>;
21
+ };
22
+ export declare function readConfigFile(filePath: string): Record<string, unknown>;
23
+ export declare function writeConfigFile(filePath: string, config: Record<string, unknown>): void;
24
+ export declare function loadMergedConfig(): Record<string, unknown>;
25
+ export declare function getConfig(key: "embeddingModels"): ConfigKeyTypeMap["embeddingModels"] | null;
26
+ export declare function getConfig(key: "defaultEmbeddingModelId"): ConfigKeyTypeMap["defaultEmbeddingModelId"] | null;
27
+ export declare function setConfig(key: string, value: unknown, options?: {
28
+ user?: boolean;
29
+ }): void;
30
+ export declare function removeConfig(key: string, options?: {
31
+ user?: boolean;
32
+ }): void;
33
+ export declare function listConfig(options?: {
34
+ user?: boolean;
35
+ }): Record<string, unknown>;
36
+ export declare function getModelConfig(modelId: string): EmbeddingModelConfig;
37
+ export declare function getDefaultModelConfig(): EmbeddingModelConfig;
38
+ export {};
@@ -0,0 +1,107 @@
1
+ import * as fs from "node:fs";
2
+ import * as os from "node:os";
3
+ import * as path from "node:path";
4
+ import * as z from "zod";
5
+ import { EmbeddingModelConfigSchema } from '../types/index.js';
6
+ // ─── Path Utilities ─────────────────────────────────────────
7
+ const USER_DATA_DIR = path.join(os.homedir(), ".paper-manager");
8
+ const PROJECT_DATA_DIR = path.resolve(".paper-manager");
9
+ export function getUserDataDir() {
10
+ return USER_DATA_DIR;
11
+ }
12
+ export function getProjectDataDir() {
13
+ return PROJECT_DATA_DIR;
14
+ }
15
+ export function getPdfDir(base) {
16
+ return path.join(base, "pdfs");
17
+ }
18
+ export function getVectorStoreDir(base) {
19
+ return path.join(base, "vector-stores");
20
+ }
21
+ function getUserConfigPath() {
22
+ return path.join(USER_DATA_DIR, "config.json");
23
+ }
24
+ function getProjectConfigPath() {
25
+ return path.join(PROJECT_DATA_DIR, "config.json");
26
+ }
27
+ // ─── Config Schema Map ─────────────────────────────────────
28
+ const configSchemas = {
29
+ embeddingModels: z.record(z.string().min(1), EmbeddingModelConfigSchema),
30
+ defaultEmbeddingModelId: z.string().min(1),
31
+ };
32
+ // ─── Config File I/O ────────────────────────────────────────
33
+ export function readConfigFile(filePath) {
34
+ try {
35
+ const content = fs.readFileSync(filePath, "utf-8");
36
+ const parsed = JSON.parse(content);
37
+ if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
38
+ return parsed;
39
+ }
40
+ return {};
41
+ }
42
+ catch {
43
+ return {};
44
+ }
45
+ }
46
+ export function writeConfigFile(filePath, config) {
47
+ const dir = path.dirname(filePath);
48
+ fs.mkdirSync(dir, { recursive: true });
49
+ fs.writeFileSync(filePath, JSON.stringify(config, null, 2) + "\n", "utf-8");
50
+ }
51
+ // ─── Config Access ──────────────────────────────────────────
52
+ export function loadMergedConfig() {
53
+ const userConfig = readConfigFile(getUserConfigPath());
54
+ const projectConfig = readConfigFile(getProjectConfigPath());
55
+ return { ...userConfig, ...projectConfig };
56
+ }
57
+ function getRawConfigValue(key) {
58
+ const merged = loadMergedConfig();
59
+ return merged[key];
60
+ }
61
+ export function getConfig(key) {
62
+ const rawValue = getRawConfigValue(key);
63
+ if (rawValue === undefined)
64
+ return null;
65
+ const schema = configSchemas[key];
66
+ const result = schema.safeParse(rawValue);
67
+ if (!result.success) {
68
+ throw new Error(`Invalid config for "${key}": ${result.error.message}`);
69
+ }
70
+ return result.data;
71
+ }
72
+ export function setConfig(key, value, options) {
73
+ const filePath = options?.user ? getUserConfigPath() : getProjectConfigPath();
74
+ const config = readConfigFile(filePath);
75
+ config[key] = value;
76
+ writeConfigFile(filePath, config);
77
+ }
78
+ export function removeConfig(key, options) {
79
+ const filePath = options?.user ? getUserConfigPath() : getProjectConfigPath();
80
+ const config = readConfigFile(filePath);
81
+ delete config[key];
82
+ writeConfigFile(filePath, config);
83
+ }
84
+ export function listConfig(options) {
85
+ const filePath = options?.user ? getUserConfigPath() : getProjectConfigPath();
86
+ return readConfigFile(filePath);
87
+ }
88
+ // ─── Model Config ───────────────────────────────────────────
89
+ export function getModelConfig(modelId) {
90
+ const models = getConfig("embeddingModels");
91
+ if (!models) {
92
+ throw new Error("No embedding models configured");
93
+ }
94
+ const config = models[modelId];
95
+ if (!config) {
96
+ throw new Error(`Model config not found: ${modelId}`);
97
+ }
98
+ return { ...config, id: modelId };
99
+ }
100
+ export function getDefaultModelConfig() {
101
+ const defaultId = getConfig("defaultEmbeddingModelId");
102
+ if (!defaultId) {
103
+ throw new Error("No default embedding model configured. Set 'defaultEmbeddingModelId' in config.");
104
+ }
105
+ return getModelConfig(defaultId);
106
+ }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type BetterSqlite3 from "better-sqlite3";
2
+ import type { KnowledgeBaseMetadata, LiteratureMetadata } from "../types/index.js";
3
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
4
+ export declare function dbRowToKnowledgeBase(row: unknown): KnowledgeBaseMetadata;
5
+ export declare function dbRowToLiterature(row: unknown): LiteratureMetadata;
6
+ export declare function openDatabase(dbPath: string): BetterSqlite3.Database;
7
+ export declare function initializeDatabase(db: BetterSqlite3.Database): void;
8
+ export declare function getUserDb(): BetterSqlite3.Database;
9
+ export declare function getProjectDb(): BetterSqlite3.Database;
@@ -0,0 +1,76 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import Database from "better-sqlite3";
4
+ import { getProjectDataDir, getUserDataDir } from "../config/index.js";
5
+ import { KnowledgeBaseMetadataSchema, LiteratureMetadataSchema } from "../types/index.js";
6
+ import { CREATE_KNOWLEDGE_BASES_TABLE, CREATE_LITERATURES_TABLE } from "./schema.js";
7
+ // ─── Type Guard ─────────────────────────────────────────────
8
+ export function isRecord(value) {
9
+ return typeof value === "object" && value !== null && !Array.isArray(value);
10
+ }
11
+ // ─── Row Converters ─────────────────────────────────────────
12
+ export function dbRowToKnowledgeBase(row) {
13
+ if (!isRecord(row)) {
14
+ throw new Error("Invalid database row: expected an object");
15
+ }
16
+ return KnowledgeBaseMetadataSchema.parse({
17
+ id: row["id"],
18
+ name: row["name"],
19
+ description: row["description"],
20
+ embeddingModelId: row["embedding_model_id"],
21
+ createdAt: new Date(Number(row["created_at"])),
22
+ updatedAt: new Date(Number(row["updated_at"])),
23
+ });
24
+ }
25
+ export function dbRowToLiterature(row) {
26
+ if (!isRecord(row)) {
27
+ throw new Error("Invalid database row: expected an object");
28
+ }
29
+ return LiteratureMetadataSchema.parse({
30
+ id: row["id"],
31
+ title: row["title"],
32
+ titleTranslation: row["title_translation"] ?? null,
33
+ author: row["author"] ?? null,
34
+ abstract: row["abstract"] ?? null,
35
+ summary: row["summary"] ?? null,
36
+ keywords: JSON.parse(typeof row["keywords"] === "string" ? row["keywords"] : "[]"),
37
+ url: row["url"] ?? null,
38
+ notes: JSON.parse(typeof row["notes"] === "string" ? row["notes"] : "{}"),
39
+ knowledgeBaseId: row["knowledge_base_id"],
40
+ createdAt: new Date(Number(row["created_at"])),
41
+ updatedAt: new Date(Number(row["updated_at"])),
42
+ });
43
+ }
44
+ // ─── Database Connection ────────────────────────────────────
45
+ export function openDatabase(dbPath) {
46
+ const dir = path.dirname(dbPath);
47
+ fs.mkdirSync(dir, { recursive: true });
48
+ const db = new Database(dbPath);
49
+ db.pragma("journal_mode = WAL");
50
+ db.pragma("foreign_keys = ON");
51
+ return db;
52
+ }
53
+ export function initializeDatabase(db) {
54
+ db.exec(CREATE_KNOWLEDGE_BASES_TABLE);
55
+ db.exec(CREATE_LITERATURES_TABLE);
56
+ }
57
+ // ─── Singleton Connections ──────────────────────────────────
58
+ let userDb = null;
59
+ let projectDb = null;
60
+ export function getUserDb() {
61
+ if (!userDb) {
62
+ const dbPath = path.join(getUserDataDir(), "papers.db");
63
+ userDb = openDatabase(dbPath);
64
+ initializeDatabase(userDb);
65
+ }
66
+ return userDb;
67
+ }
68
+ export function getProjectDb() {
69
+ if (!projectDb) {
70
+ const dbPath = path.join(getProjectDataDir(), "papers.db");
71
+ projectDb = openDatabase(dbPath);
72
+ initializeDatabase(projectDb);
73
+ }
74
+ return projectDb;
75
+ }
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type BetterSqlite3 from "better-sqlite3";
2
+ import type { KnowledgeBaseMetadata } from "../../types/index.js";
3
+ export declare function createKnowledgeBase(db: BetterSqlite3.Database, input: {
4
+ name: string;
5
+ description: string;
6
+ embeddingModelId: string;
7
+ }): KnowledgeBaseMetadata;
8
+ export declare function getKnowledgeBase(db: BetterSqlite3.Database, id: string): KnowledgeBaseMetadata | null;
9
+ export declare function listKnowledgeBases(db: BetterSqlite3.Database): KnowledgeBaseMetadata[];
10
+ export declare function deleteKnowledgeBase(db: BetterSqlite3.Database, id: string): boolean;
@@ -0,0 +1,25 @@
1
+ import * as crypto from "node:crypto";
2
+ import { dbRowToKnowledgeBase } from "../index.js";
3
+ export function createKnowledgeBase(db, input) {
4
+ const id = crypto.randomUUID();
5
+ const now = Date.now();
6
+ db.prepare(`INSERT INTO knowledge_bases (id, name, description, embedding_model_id, created_at, updated_at)
7
+ VALUES (?, ?, ?, ?, ?, ?)`).run(id, input.name, input.description, input.embeddingModelId, now, now);
8
+ const row = db.prepare("SELECT * FROM knowledge_bases WHERE id = ?").get(id);
9
+ return dbRowToKnowledgeBase(row);
10
+ }
11
+ export function getKnowledgeBase(db, id) {
12
+ const row = db.prepare("SELECT * FROM knowledge_bases WHERE id = ?").get(id);
13
+ if (!row)
14
+ return null;
15
+ return dbRowToKnowledgeBase(row);
16
+ }
17
+ export function listKnowledgeBases(db) {
18
+ const rows = db.prepare("SELECT * FROM knowledge_bases ORDER BY created_at DESC").all();
19
+ return rows.map(dbRowToKnowledgeBase);
20
+ }
21
+ export function deleteKnowledgeBase(db, id) {
22
+ const result = db.prepare("DELETE FROM knowledge_bases WHERE id = ?").run(id);
23
+ return result.changes > 0;
24
+ }
25
+ //# sourceMappingURL=knowledge-bases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/db/operations/knowledge-bases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAKtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,UAAU,mBAAmB,CACjC,EAA0B,EAC1B,KAAsE;IAEtE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,EAAE,CAAC,OAAO,CACR;+BAC2B,CAC5B,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE3E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAA0B,EAC1B,EAAU;IAEV,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAA0B;IAC3D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,EAAE,CAAC;IACxF,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAA0B,EAAE,EAAU;IACxE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type BetterSqlite3 from "better-sqlite3";
2
+ import type { CreateLiteratureInput, LiteratureMetadata, UpdateLiteratureInput } from "../../types/index.js";
3
+ export declare function createLiterature(db: BetterSqlite3.Database, input: CreateLiteratureInput): LiteratureMetadata;
4
+ export declare function getLiterature(db: BetterSqlite3.Database, id: string): LiteratureMetadata | null;
5
+ export declare function listLiteratures(db: BetterSqlite3.Database, knowledgeBaseId: string): LiteratureMetadata[];
6
+ export declare function updateLiterature(db: BetterSqlite3.Database, id: string, input: UpdateLiteratureInput): LiteratureMetadata | null;
7
+ export declare function deleteLiterature(db: BetterSqlite3.Database, id: string): boolean;
8
+ export declare function deleteLiteraturesByKnowledgeBaseId(db: BetterSqlite3.Database, knowledgeBaseId: string): number;
9
+ export declare function getLiteraturesByKnowledgeBaseId(db: BetterSqlite3.Database, knowledgeBaseId: string): LiteratureMetadata[];
@@ -0,0 +1,87 @@
1
+ import * as crypto from "node:crypto";
2
+ import { dbRowToLiterature } from "../index.js";
3
+ export function createLiterature(db, input) {
4
+ const id = crypto.randomUUID();
5
+ const now = Date.now();
6
+ db.prepare(`INSERT INTO literatures (id, title, title_translation, author, abstract, summary, keywords, url, notes, knowledge_base_id, created_at, updated_at)
7
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, input.title, input.titleTranslation ?? null, input.author ?? null, input.abstract ?? null, input.summary ?? null, JSON.stringify(input.keywords), input.url ?? null, JSON.stringify(input.notes), input.knowledgeBaseId, now, now);
8
+ const row = db.prepare("SELECT * FROM literatures WHERE id = ?").get(id);
9
+ return dbRowToLiterature(row);
10
+ }
11
+ export function getLiterature(db, id) {
12
+ const row = db.prepare("SELECT * FROM literatures WHERE id = ?").get(id);
13
+ if (!row)
14
+ return null;
15
+ return dbRowToLiterature(row);
16
+ }
17
+ export function listLiteratures(db, knowledgeBaseId) {
18
+ const rows = db
19
+ .prepare("SELECT * FROM literatures WHERE knowledge_base_id = ? ORDER BY created_at DESC")
20
+ .all(knowledgeBaseId);
21
+ return rows.map(dbRowToLiterature);
22
+ }
23
+ export function updateLiterature(db, id, input) {
24
+ const existing = getLiterature(db, id);
25
+ if (!existing)
26
+ return null;
27
+ const now = Date.now();
28
+ const fields = [];
29
+ const values = [];
30
+ if (input.title !== undefined) {
31
+ fields.push("title = ?");
32
+ values.push(input.title);
33
+ }
34
+ if (input.titleTranslation !== undefined) {
35
+ fields.push("title_translation = ?");
36
+ values.push(input.titleTranslation);
37
+ }
38
+ if (input.author !== undefined) {
39
+ fields.push("author = ?");
40
+ values.push(input.author);
41
+ }
42
+ if (input.abstract !== undefined) {
43
+ fields.push("abstract = ?");
44
+ values.push(input.abstract);
45
+ }
46
+ if (input.summary !== undefined) {
47
+ fields.push("summary = ?");
48
+ values.push(input.summary);
49
+ }
50
+ if (input.keywords !== undefined) {
51
+ fields.push("keywords = ?");
52
+ values.push(JSON.stringify(input.keywords));
53
+ }
54
+ if (input.url !== undefined) {
55
+ fields.push("url = ?");
56
+ values.push(input.url);
57
+ }
58
+ if (input.notes !== undefined) {
59
+ fields.push("notes = ?");
60
+ values.push(JSON.stringify(input.notes));
61
+ }
62
+ if (input.knowledgeBaseId !== undefined) {
63
+ fields.push("knowledge_base_id = ?");
64
+ values.push(input.knowledgeBaseId);
65
+ }
66
+ if (fields.length === 0)
67
+ return existing;
68
+ fields.push("updated_at = ?");
69
+ values.push(now);
70
+ values.push(id);
71
+ db.prepare(`UPDATE literatures SET ${fields.join(", ")} WHERE id = ?`).run(...values);
72
+ return getLiterature(db, id);
73
+ }
74
+ export function deleteLiterature(db, id) {
75
+ const result = db.prepare("DELETE FROM literatures WHERE id = ?").run(id);
76
+ return result.changes > 0;
77
+ }
78
+ export function deleteLiteraturesByKnowledgeBaseId(db, knowledgeBaseId) {
79
+ const result = db
80
+ .prepare("DELETE FROM literatures WHERE knowledge_base_id = ?")
81
+ .run(knowledgeBaseId);
82
+ return result.changes;
83
+ }
84
+ export function getLiteraturesByKnowledgeBaseId(db, knowledgeBaseId) {
85
+ return listLiteratures(db, knowledgeBaseId);
86
+ }
87
+ //# sourceMappingURL=literatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literatures.js","sourceRoot":"","sources":["../../../src/db/operations/literatures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { KnowledgeBaseMetadata } from "../../types/index.js";
2
+ export declare function createKnowledgeBase(input: {
3
+ name: string;
4
+ description: string;
5
+ embeddingModelId: string;
6
+ }): KnowledgeBaseMetadata;
7
+ export declare function getKnowledgeBase(id: string): KnowledgeBaseMetadata | null;
8
+ export declare function listKnowledgeBases(): KnowledgeBaseMetadata[];
9
+ export declare function deleteKnowledgeBase(id: string): boolean;
@@ -0,0 +1,15 @@
1
+ import { getProjectDb } from "../index.js";
2
+ import * as ops from "../operations/knowledge-bases.js";
3
+ export function createKnowledgeBase(input) {
4
+ return ops.createKnowledgeBase(getProjectDb(), input);
5
+ }
6
+ export function getKnowledgeBase(id) {
7
+ return ops.getKnowledgeBase(getProjectDb(), id);
8
+ }
9
+ export function listKnowledgeBases() {
10
+ return ops.listKnowledgeBases(getProjectDb());
11
+ }
12
+ export function deleteKnowledgeBase(id) {
13
+ return ops.deleteKnowledgeBase(getProjectDb(), id);
14
+ }
15
+ //# sourceMappingURL=knowledge-bases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/db/project/knowledge-bases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,kCAAkC,CAAC;AAExD,MAAM,UAAU,mBAAmB,CAAC,KAInC;IACC,OAAO,GAAG,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,GAAG,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CreateLiteratureInput, LiteratureMetadata, UpdateLiteratureInput } from "../../types/index.js";
2
+ export declare function createLiterature(input: CreateLiteratureInput): LiteratureMetadata;
3
+ export declare function getLiterature(id: string): LiteratureMetadata | null;
4
+ export declare function listLiteratures(knowledgeBaseId: string): LiteratureMetadata[];
5
+ export declare function updateLiterature(id: string, input: UpdateLiteratureInput): LiteratureMetadata | null;
6
+ export declare function deleteLiterature(id: string): boolean;
7
+ export declare function deleteLiteraturesByKnowledgeBaseId(knowledgeBaseId: string): number;
8
+ export declare function getLiteraturesByKnowledgeBaseId(knowledgeBaseId: string): LiteratureMetadata[];
@@ -0,0 +1,24 @@
1
+ import { getProjectDb } from "../index.js";
2
+ import * as ops from "../operations/literatures.js";
3
+ export function createLiterature(input) {
4
+ return ops.createLiterature(getProjectDb(), input);
5
+ }
6
+ export function getLiterature(id) {
7
+ return ops.getLiterature(getProjectDb(), id);
8
+ }
9
+ export function listLiteratures(knowledgeBaseId) {
10
+ return ops.listLiteratures(getProjectDb(), knowledgeBaseId);
11
+ }
12
+ export function updateLiterature(id, input) {
13
+ return ops.updateLiterature(getProjectDb(), id, input);
14
+ }
15
+ export function deleteLiterature(id) {
16
+ return ops.deleteLiterature(getProjectDb(), id);
17
+ }
18
+ export function deleteLiteraturesByKnowledgeBaseId(knowledgeBaseId) {
19
+ return ops.deleteLiteraturesByKnowledgeBaseId(getProjectDb(), knowledgeBaseId);
20
+ }
21
+ export function getLiteraturesByKnowledgeBaseId(knowledgeBaseId) {
22
+ return ops.getLiteraturesByKnowledgeBaseId(getProjectDb(), knowledgeBaseId);
23
+ }
24
+ //# sourceMappingURL=literatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literatures.js","sourceRoot":"","sources":["../../../src/db/project/literatures.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,eAAuB;IACrD,OAAO,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAU,EACV,KAA4B;IAE5B,OAAO,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,eAAuB;IACxE,OAAO,GAAG,CAAC,kCAAkC,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,eAAuB;IACrE,OAAO,GAAG,CAAC,+BAA+B,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CREATE_KNOWLEDGE_BASES_TABLE = "\nCREATE TABLE IF NOT EXISTS knowledge_bases (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n description TEXT NOT NULL,\n embedding_model_id TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n)";
2
+ export declare const CREATE_LITERATURES_TABLE = "\nCREATE TABLE IF NOT EXISTS literatures (\n id TEXT PRIMARY KEY,\n title TEXT NOT NULL,\n title_translation TEXT,\n author TEXT,\n abstract TEXT,\n summary TEXT,\n keywords TEXT NOT NULL DEFAULT '[]',\n url TEXT,\n notes TEXT NOT NULL DEFAULT '{}',\n knowledge_base_id TEXT,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n FOREIGN KEY (knowledge_base_id) REFERENCES knowledge_bases(id) ON DELETE SET NULL\n)";
@@ -0,0 +1,26 @@
1
+ export const CREATE_KNOWLEDGE_BASES_TABLE = `
2
+ CREATE TABLE IF NOT EXISTS knowledge_bases (
3
+ id TEXT PRIMARY KEY,
4
+ name TEXT NOT NULL UNIQUE,
5
+ description TEXT NOT NULL,
6
+ embedding_model_id TEXT NOT NULL,
7
+ created_at INTEGER NOT NULL,
8
+ updated_at INTEGER NOT NULL
9
+ )`;
10
+ export const CREATE_LITERATURES_TABLE = `
11
+ CREATE TABLE IF NOT EXISTS literatures (
12
+ id TEXT PRIMARY KEY,
13
+ title TEXT NOT NULL,
14
+ title_translation TEXT,
15
+ author TEXT,
16
+ abstract TEXT,
17
+ summary TEXT,
18
+ keywords TEXT NOT NULL DEFAULT '[]',
19
+ url TEXT,
20
+ notes TEXT NOT NULL DEFAULT '{}',
21
+ knowledge_base_id TEXT,
22
+ created_at INTEGER NOT NULL,
23
+ updated_at INTEGER NOT NULL,
24
+ FOREIGN KEY (knowledge_base_id) REFERENCES knowledge_bases(id) ON DELETE SET NULL
25
+ )`;
26
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;EAQ1C,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;EAetC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { KnowledgeBaseMetadata } from "../../types/index.js";
2
+ export declare function createKnowledgeBase(input: {
3
+ name: string;
4
+ description: string;
5
+ embeddingModelId: string;
6
+ }): KnowledgeBaseMetadata;
7
+ export declare function getKnowledgeBase(id: string): KnowledgeBaseMetadata | null;
8
+ export declare function listKnowledgeBases(): KnowledgeBaseMetadata[];
9
+ export declare function deleteKnowledgeBase(id: string): boolean;
@@ -0,0 +1,15 @@
1
+ import { getUserDb } from "../index.js";
2
+ import * as ops from "../operations/knowledge-bases.js";
3
+ export function createKnowledgeBase(input) {
4
+ return ops.createKnowledgeBase(getUserDb(), input);
5
+ }
6
+ export function getKnowledgeBase(id) {
7
+ return ops.getKnowledgeBase(getUserDb(), id);
8
+ }
9
+ export function listKnowledgeBases() {
10
+ return ops.listKnowledgeBases(getUserDb());
11
+ }
12
+ export function deleteKnowledgeBase(id) {
13
+ return ops.deleteKnowledgeBase(getUserDb(), id);
14
+ }
15
+ //# sourceMappingURL=knowledge-bases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-bases.js","sourceRoot":"","sources":["../../../src/db/user/knowledge-bases.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,kCAAkC,CAAC;AAExD,MAAM,UAAU,mBAAmB,CAAC,KAInC;IACC,OAAO,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CreateLiteratureInput, LiteratureMetadata, UpdateLiteratureInput } from "../../types/index.js";
2
+ export declare function createLiterature(input: CreateLiteratureInput): LiteratureMetadata;
3
+ export declare function getLiterature(id: string): LiteratureMetadata | null;
4
+ export declare function listLiteratures(knowledgeBaseId: string): LiteratureMetadata[];
5
+ export declare function updateLiterature(id: string, input: UpdateLiteratureInput): LiteratureMetadata | null;
6
+ export declare function deleteLiterature(id: string): boolean;
7
+ export declare function deleteLiteraturesByKnowledgeBaseId(knowledgeBaseId: string): number;
8
+ export declare function getLiteraturesByKnowledgeBaseId(knowledgeBaseId: string): LiteratureMetadata[];
@@ -0,0 +1,24 @@
1
+ import { getUserDb } from "../index.js";
2
+ import * as ops from "../operations/literatures.js";
3
+ export function createLiterature(input) {
4
+ return ops.createLiterature(getUserDb(), input);
5
+ }
6
+ export function getLiterature(id) {
7
+ return ops.getLiterature(getUserDb(), id);
8
+ }
9
+ export function listLiteratures(knowledgeBaseId) {
10
+ return ops.listLiteratures(getUserDb(), knowledgeBaseId);
11
+ }
12
+ export function updateLiterature(id, input) {
13
+ return ops.updateLiterature(getUserDb(), id, input);
14
+ }
15
+ export function deleteLiterature(id) {
16
+ return ops.deleteLiterature(getUserDb(), id);
17
+ }
18
+ export function deleteLiteraturesByKnowledgeBaseId(knowledgeBaseId) {
19
+ return ops.deleteLiteraturesByKnowledgeBaseId(getUserDb(), knowledgeBaseId);
20
+ }
21
+ export function getLiteraturesByKnowledgeBaseId(knowledgeBaseId) {
22
+ return ops.getLiteraturesByKnowledgeBaseId(getUserDb(), knowledgeBaseId);
23
+ }
24
+ //# sourceMappingURL=literatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literatures.js","sourceRoot":"","sources":["../../../src/db/user/literatures.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,eAAuB;IACrD,OAAO,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAU,EACV,KAA4B;IAE5B,OAAO,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,eAAuB;IACxE,OAAO,GAAG,CAAC,kCAAkC,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,eAAuB;IACrE,OAAO,GAAG,CAAC,+BAA+B,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { createConfigCommand } from "./commands/config.js";
4
+ import { createKnowledgeBaseCommand } from "./commands/knowledge-base.js";
5
+ import { createLiteratureCommand } from "./commands/literature.js";
6
+ const program = new Command();
7
+ program.name("paper").description("A paper management CLI tool").version("0.0.1");
8
+ program.addCommand(createConfigCommand());
9
+ program.addCommand(createKnowledgeBaseCommand());
10
+ program.addCommand(createLiteratureCommand());
11
+ program.parse();
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAElF,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC;AACjD,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAE9C,OAAO,CAAC,KAAK,EAAE,CAAC"}