@ncukondo/reference-manager 0.5.3 → 0.6.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 (69) hide show
  1. package/README.md +57 -0
  2. package/dist/chunks/{file-watcher-CBAbblss.js → file-watcher-Cwfnnw92.js} +42 -10
  3. package/dist/chunks/file-watcher-Cwfnnw92.js.map +1 -0
  4. package/dist/chunks/{index-Bl_mOQRe.js → index-CQO8hLYm.js} +263 -132
  5. package/dist/chunks/index-CQO8hLYm.js.map +1 -0
  6. package/dist/chunks/{loader-DuzyKV70.js → loader-B_ZLxCQW.js} +97 -26
  7. package/dist/chunks/loader-B_ZLxCQW.js.map +1 -0
  8. package/dist/cli/commands/list.d.ts +7 -1
  9. package/dist/cli/commands/list.d.ts.map +1 -1
  10. package/dist/cli/commands/search.d.ts +7 -1
  11. package/dist/cli/commands/search.d.ts.map +1 -1
  12. package/dist/cli/completion.d.ts +65 -0
  13. package/dist/cli/completion.d.ts.map +1 -0
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli.js +480 -118
  16. package/dist/cli.js.map +1 -1
  17. package/dist/config/defaults.d.ts.map +1 -1
  18. package/dist/config/loader.d.ts.map +1 -1
  19. package/dist/config/schema.d.ts +74 -0
  20. package/dist/config/schema.d.ts.map +1 -1
  21. package/dist/features/operations/list.d.ts +12 -3
  22. package/dist/features/operations/list.d.ts.map +1 -1
  23. package/dist/features/operations/search.d.ts +19 -3
  24. package/dist/features/operations/search.d.ts.map +1 -1
  25. package/dist/features/pagination/aliases.d.ts +14 -0
  26. package/dist/features/pagination/aliases.d.ts.map +1 -0
  27. package/dist/features/pagination/index.d.ts +8 -0
  28. package/dist/features/pagination/index.d.ts.map +1 -0
  29. package/dist/features/pagination/paginate.d.ts +20 -0
  30. package/dist/features/pagination/paginate.d.ts.map +1 -0
  31. package/dist/features/pagination/sorter.d.ts +16 -0
  32. package/dist/features/pagination/sorter.d.ts.map +1 -0
  33. package/dist/features/pagination/types.d.ts +74 -0
  34. package/dist/features/pagination/types.d.ts.map +1 -0
  35. package/dist/index.js +13 -12
  36. package/dist/index.js.map +1 -1
  37. package/dist/mcp/context.d.ts +4 -4
  38. package/dist/mcp/context.d.ts.map +1 -1
  39. package/dist/mcp/resources/index.d.ts +3 -3
  40. package/dist/mcp/resources/index.d.ts.map +1 -1
  41. package/dist/mcp/resources/library.d.ts +5 -5
  42. package/dist/mcp/resources/library.d.ts.map +1 -1
  43. package/dist/mcp/tools/add.d.ts +3 -3
  44. package/dist/mcp/tools/add.d.ts.map +1 -1
  45. package/dist/mcp/tools/cite.d.ts +3 -3
  46. package/dist/mcp/tools/cite.d.ts.map +1 -1
  47. package/dist/mcp/tools/fulltext.d.ts +7 -7
  48. package/dist/mcp/tools/fulltext.d.ts.map +1 -1
  49. package/dist/mcp/tools/index.d.ts +3 -3
  50. package/dist/mcp/tools/index.d.ts.map +1 -1
  51. package/dist/mcp/tools/list.d.ts +10 -3
  52. package/dist/mcp/tools/list.d.ts.map +1 -1
  53. package/dist/mcp/tools/remove.d.ts +3 -3
  54. package/dist/mcp/tools/remove.d.ts.map +1 -1
  55. package/dist/mcp/tools/search.d.ts +10 -3
  56. package/dist/mcp/tools/search.d.ts.map +1 -1
  57. package/dist/server/routes/list.d.ts +13 -0
  58. package/dist/server/routes/list.d.ts.map +1 -1
  59. package/dist/server/routes/search.d.ts +14 -0
  60. package/dist/server/routes/search.d.ts.map +1 -1
  61. package/dist/server.js +4 -4
  62. package/dist/utils/index.d.ts +1 -0
  63. package/dist/utils/index.d.ts.map +1 -1
  64. package/dist/utils/object.d.ts +16 -0
  65. package/dist/utils/object.d.ts.map +1 -0
  66. package/package.json +3 -1
  67. package/dist/chunks/file-watcher-CBAbblss.js.map +0 -1
  68. package/dist/chunks/index-Bl_mOQRe.js.map +0 -1
  69. package/dist/chunks/loader-DuzyKV70.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CAwB7F;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CA4C5F;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyB9D"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,GAC7C,IAAI,CAuBN;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,GAC7C,IAAI,CA0CN;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyB9D"}
@@ -1,5 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { Library } from "../../core/library.js";
2
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
3
3
  /**
4
4
  * Parameters for the add tool
5
5
  */
@@ -11,7 +11,7 @@ export interface AddToolParams {
11
11
  * Register the add tool with the MCP server.
12
12
  *
13
13
  * @param server - The MCP server instance
14
- * @param getLibrary - Function to get the current library instance
14
+ * @param getLibraryOperations - Function to get the current library operations instance
15
15
  */
16
- export declare function registerAddTool(server: McpServer, getLibrary: () => Library): void;
16
+ export declare function registerAddTool(server: McpServer, getLibraryOperations: () => ILibraryOperations): void;
17
17
  //# sourceMappingURL=add.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAqCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CAkClF"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAqCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,GAC7C,IAAI,CAkCN"}
@@ -1,5 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { Library } from "../../core/library.js";
2
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
3
3
  export interface CiteToolParams {
4
4
  ids: string[];
5
5
  style?: string | undefined;
@@ -9,7 +9,7 @@ export interface CiteToolParams {
9
9
  * Register the cite tool with the MCP server.
10
10
  *
11
11
  * @param server - The MCP server instance
12
- * @param getLibrary - Function to get the current library instance
12
+ * @param getLibraryOperations - Function to get the current library operations instance
13
13
  */
14
- export declare function registerCiteTool(server: McpServer, getLibrary: () => Library): void;
14
+ export declare function registerCiteTool(server: McpServer, getLibraryOperations: () => ILibraryOperations): void;
15
15
  //# sourceMappingURL=cite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cite.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/cite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CAkCnF"}
1
+ {"version":3,"file":"cite.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/cite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,GAC7C,IAAI,CAkCN"}
@@ -1,6 +1,6 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { Config } from "../../config/schema.js";
3
- import type { Library } from "../../core/library.js";
3
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
4
4
  /**
5
5
  * Parameters for the fulltext_attach tool
6
6
  */
@@ -28,24 +28,24 @@ export interface FulltextDetachToolParams {
28
28
  * Register the fulltext_attach tool with the MCP server.
29
29
  *
30
30
  * @param server - The MCP server instance
31
- * @param getLibrary - Function to get the current library instance
31
+ * @param getLibraryOperations - Function to get the current library operations instance
32
32
  * @param getConfig - Function to get the current config
33
33
  */
34
- export declare function registerFulltextAttachTool(server: McpServer, getLibrary: () => Library, getConfig: () => Config): void;
34
+ export declare function registerFulltextAttachTool(server: McpServer, getLibraryOperations: () => ILibraryOperations, getConfig: () => Config): void;
35
35
  /**
36
36
  * Register the fulltext_get tool with the MCP server.
37
37
  *
38
38
  * @param server - The MCP server instance
39
- * @param getLibrary - Function to get the current library instance
39
+ * @param getLibraryOperations - Function to get the current library operations instance
40
40
  * @param getConfig - Function to get the current config
41
41
  */
42
- export declare function registerFulltextGetTool(server: McpServer, getLibrary: () => Library, getConfig: () => Config): void;
42
+ export declare function registerFulltextGetTool(server: McpServer, getLibraryOperations: () => ILibraryOperations, getConfig: () => Config): void;
43
43
  /**
44
44
  * Register the fulltext_detach tool with the MCP server.
45
45
  *
46
46
  * @param server - The MCP server instance
47
- * @param getLibrary - Function to get the current library instance
47
+ * @param getLibraryOperations - Function to get the current library operations instance
48
48
  * @param getConfig - Function to get the current config
49
49
  */
50
- export declare function registerFulltextDetachTool(server: McpServer, getLibrary: () => Library, getConfig: () => Config): void;
50
+ export declare function registerFulltextDetachTool(server: McpServer, getLibraryOperations: () => ILibraryOperations, getConfig: () => Config): void;
51
51
  //# sourceMappingURL=fulltext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fulltext.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/fulltext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAOrD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,OAAO,EACzB,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CAuCN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,OAAO,EACzB,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CAgEN;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,OAAO,EACzB,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CAqCN"}
1
+ {"version":3,"file":"fulltext.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/fulltext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAMrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,EAC9C,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CAuCN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,EAC9C,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CAgEN;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,EAC9C,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CAqCN"}
@@ -1,12 +1,12 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { Config } from "../../config/schema.js";
3
- import type { Library } from "../../core/library.js";
3
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
4
4
  /**
5
5
  * Register all tools with the MCP server.
6
6
  *
7
7
  * @param server - The MCP server instance
8
- * @param getLibrary - Function to get the current library instance
8
+ * @param getLibraryOperations - Function to get the current library operations instance
9
9
  * @param getConfig - Function to get the current config (required for fulltext tools)
10
10
  */
11
- export declare function registerAllTools(server: McpServer, getLibrary: () => Library, getConfig: () => Config): void;
11
+ export declare function registerAllTools(server: McpServer, getLibraryOperations: () => ILibraryOperations, getConfig: () => Config): void;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAYrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,OAAO,EACzB,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CASN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAY1F;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,EAC9C,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CASN"}
@@ -1,13 +1,20 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { Library } from "../../core/library.js";
2
+ import type { Config } from "../../config/schema.js";
3
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
4
+ import { type SortField, type SortOrder } from "../../features/pagination/index.js";
3
5
  export interface ListToolParams {
4
6
  format?: "json" | "bibtex" | "pretty" | undefined;
7
+ sort?: SortField | undefined;
8
+ order?: SortOrder | undefined;
9
+ limit?: number | undefined;
10
+ offset?: number | undefined;
5
11
  }
6
12
  /**
7
13
  * Register the list tool with the MCP server.
8
14
  *
9
15
  * @param server - The MCP server instance
10
- * @param getLibrary - Function to get the current library instance
16
+ * @param getLibraryOperations - Function to get the current library operations instance
17
+ * @param getConfig - Function to get the current config
11
18
  */
12
- export declare function registerListTool(server: McpServer, getLibrary: () => Library): void;
19
+ export declare function registerListTool(server: McpServer, getLibraryOperations: () => ILibraryOperations, getConfig: () => Config): void;
13
20
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CA0BnF"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EAGf,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,EAC9C,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CA0DN"}
@@ -1,5 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { Library } from "../../core/library.js";
2
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
3
3
  /**
4
4
  * Parameters for the remove tool
5
5
  */
@@ -13,7 +13,7 @@ export interface RemoveToolParams {
13
13
  * Register the remove tool with the MCP server.
14
14
  *
15
15
  * @param server - The MCP server instance
16
- * @param getLibrary - Function to get the current library instance
16
+ * @param getLibraryOperations - Function to get the current library operations instance
17
17
  */
18
- export declare function registerRemoveTool(server: McpServer, getLibrary: () => Library): void;
18
+ export declare function registerRemoveTool(server: McpServer, getLibraryOperations: () => ILibraryOperations): void;
19
19
  //# sourceMappingURL=remove.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CAiDrF"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,GAC7C,IAAI,CAiDN"}
@@ -1,13 +1,20 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import type { Library } from "../../core/library.js";
2
+ import type { Config } from "../../config/schema.js";
3
+ import type { ILibraryOperations } from "../../features/operations/library-operations.js";
4
+ import { type SearchSortField, type SortOrder } from "../../features/pagination/index.js";
3
5
  export interface SearchToolParams {
4
6
  query: string;
7
+ sort?: SearchSortField | undefined;
8
+ order?: SortOrder | undefined;
9
+ limit?: number | undefined;
10
+ offset?: number | undefined;
5
11
  }
6
12
  /**
7
13
  * Register the search tool with the MCP server.
8
14
  *
9
15
  * @param server - The MCP server instance
10
- * @param getLibrary - Function to get the current library instance
16
+ * @param getLibraryOperations - Function to get the current library operations instance
17
+ * @param getConfig - Function to get the current config
11
18
  */
12
- export declare function registerSearchTool(server: McpServer, getLibrary: () => Library): void;
19
+ export declare function registerSearchTool(server: McpServer, getLibraryOperations: () => ILibraryOperations, getConfig: () => Config): void;
13
20
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,GAAG,IAAI,CAyBrF"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EAGf,MAAM,oCAAoC,CAAC;AAG5C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,kBAAkB,EAC9C,SAAS,EAAE,MAAM,MAAM,GACtB,IAAI,CA0DN"}
@@ -12,6 +12,19 @@ declare const listRequestBodySchema: z.ZodObject<{
12
12
  pretty: "pretty";
13
13
  "ids-only": "ids-only";
14
14
  }>>;
15
+ sort: z.ZodOptional<z.ZodEnum<{
16
+ title: "title";
17
+ author: "author";
18
+ updated: "updated";
19
+ created: "created";
20
+ published: "published";
21
+ }>>;
22
+ order: z.ZodOptional<z.ZodEnum<{
23
+ asc: "asc";
24
+ desc: "desc";
25
+ }>>;
26
+ limit: z.ZodOptional<z.ZodNumber>;
27
+ offset: z.ZodOptional<z.ZodNumber>;
15
28
  }, z.core.$strip>;
16
29
  /**
17
30
  * Request body type for list endpoint
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/server/routes/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;iBAEzB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,8EAkC/C"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/server/routes/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKrD;;GAEG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,8EAsC/C"}
@@ -13,6 +13,20 @@ declare const searchRequestBodySchema: z.ZodObject<{
13
13
  pretty: "pretty";
14
14
  "ids-only": "ids-only";
15
15
  }>>;
16
+ sort: z.ZodOptional<z.ZodEnum<{
17
+ title: "title";
18
+ author: "author";
19
+ updated: "updated";
20
+ created: "created";
21
+ published: "published";
22
+ relevance: "relevance";
23
+ }>>;
24
+ order: z.ZodOptional<z.ZodEnum<{
25
+ asc: "asc";
26
+ desc: "desc";
27
+ }>>;
28
+ limit: z.ZodOptional<z.ZodNumber>;
29
+ offset: z.ZodOptional<z.ZodNumber>;
16
30
  }, z.core.$strip>;
17
31
  /**
18
32
  * Request body type for search endpoint
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/server/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,QAAA,MAAM,uBAAuB;;;;;;;;;iBAG3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,8EAoCjD"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/server/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKrD;;GAEG;AACH,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;iBAO3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,8EAmCjD"}
package/dist/server.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import "hono";
2
- import "./chunks/file-watcher-CBAbblss.js";
3
- import { d, b } from "./chunks/index-Bl_mOQRe.js";
2
+ import "./chunks/file-watcher-Cwfnnw92.js";
3
+ import { c, s } from "./chunks/index-CQO8hLYm.js";
4
4
  export {
5
- d as createServer,
6
- b as startServerWithFileWatcher
5
+ c as createServer,
6
+ s as startServerWithFileWatcher
7
7
  };
8
8
  //# sourceMappingURL=server.js.map
@@ -2,4 +2,5 @@ export { createLogger, type Logger, type LogLevel } from "./logger";
2
2
  export { computeHash, computeFileHash } from "./hash";
3
3
  export { writeFileAtomic, ensureDirectoryExists } from "./file";
4
4
  export { createBackup, cleanupOldBackups, getBackupDirectory, listBackups, type BackupOptions, } from "./backup";
5
+ export { pickDefined } from "./object";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Object utility functions
3
+ */
4
+ /**
5
+ * Pick defined (non-undefined) properties from an object for specified keys.
6
+ * Useful for building options objects where undefined values should be omitted
7
+ * (especially with exactOptionalPropertyTypes).
8
+ *
9
+ * @param obj - Source object
10
+ * @param keys - Keys to pick from the object
11
+ * @returns New object with only defined values for specified keys
12
+ */
13
+ export declare function pickDefined<T, K extends keyof T>(obj: T, keys: readonly K[]): {
14
+ [P in K]?: Exclude<T[P], undefined>;
15
+ };
16
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAC9C,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,SAAS,CAAC,EAAE,GACjB;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CAAE,CAQzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ncukondo/reference-manager",
3
- "version": "0.5.3",
3
+ "version": "0.6.0",
4
4
  "description": "A local reference management tool using CSL-JSON as the single source of truth",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -54,6 +54,7 @@
54
54
  "chokidar": "^5.0.0",
55
55
  "commander": "^12.1.0",
56
56
  "hono": "^4.11.1",
57
+ "tabtab": "^3.0.2",
57
58
  "write-file-atomic": "^7.0.0",
58
59
  "zod": "^4.1.13"
59
60
  },
@@ -62,6 +63,7 @@
62
63
  "@hono/node-server": "^1.19.7",
63
64
  "@types/chokidar": "^1.7.5",
64
65
  "@types/node": "^22.19.2",
66
+ "@types/tabtab": "^3.0.4",
65
67
  "@types/write-file-atomic": "^4.0.3",
66
68
  "@vitest/coverage-v8": "^2.1.9",
67
69
  "typescript": "^5.6.0",