@doxhub/mcp-server 0.1.2 → 0.1.5

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 (62) hide show
  1. package/dist/api-client.d.ts +17 -0
  2. package/dist/api-client.d.ts.map +1 -1
  3. package/dist/api-client.js +18 -0
  4. package/dist/api-client.js.map +1 -1
  5. package/dist/auth/verify-token.d.ts +1 -1
  6. package/dist/auth/verify-token.d.ts.map +1 -1
  7. package/dist/auth/verify-token.js +2 -1
  8. package/dist/auth/verify-token.js.map +1 -1
  9. package/dist/cli/create-file.d.ts +8 -0
  10. package/dist/cli/create-file.d.ts.map +1 -0
  11. package/dist/cli/create-file.js +44 -0
  12. package/dist/cli/create-file.js.map +1 -0
  13. package/dist/cli/delete-file.d.ts +4 -0
  14. package/dist/cli/delete-file.d.ts.map +1 -0
  15. package/dist/cli/delete-file.js +62 -0
  16. package/dist/cli/delete-file.js.map +1 -0
  17. package/dist/cli/get-file.d.ts +5 -0
  18. package/dist/cli/get-file.d.ts.map +1 -0
  19. package/dist/cli/get-file.js +61 -0
  20. package/dist/cli/get-file.js.map +1 -0
  21. package/dist/cli/list-files.d.ts +2 -0
  22. package/dist/cli/list-files.d.ts.map +1 -0
  23. package/dist/cli/list-files.js +46 -0
  24. package/dist/cli/list-files.js.map +1 -0
  25. package/dist/cli/list-projects.d.ts +2 -0
  26. package/dist/cli/list-projects.d.ts.map +1 -0
  27. package/dist/cli/list-projects.js +52 -0
  28. package/dist/cli/list-projects.js.map +1 -0
  29. package/dist/cli/list-workspaces.d.ts +2 -0
  30. package/dist/cli/list-workspaces.d.ts.map +1 -0
  31. package/dist/cli/list-workspaces.js +41 -0
  32. package/dist/cli/list-workspaces.js.map +1 -0
  33. package/dist/cli/search.d.ts +5 -0
  34. package/dist/cli/search.d.ts.map +1 -0
  35. package/dist/cli/search.js +59 -0
  36. package/dist/cli/search.js.map +1 -0
  37. package/dist/cli/update-file.d.ts +9 -0
  38. package/dist/cli/update-file.d.ts.map +1 -0
  39. package/dist/cli/update-file.js +59 -0
  40. package/dist/cli/update-file.js.map +1 -0
  41. package/dist/index.js +156 -16
  42. package/dist/index.js.map +1 -1
  43. package/dist/server.d.ts.map +1 -1
  44. package/dist/server.js +30 -5
  45. package/dist/server.js.map +1 -1
  46. package/dist/tools/create-file.d.ts +38 -0
  47. package/dist/tools/create-file.d.ts.map +1 -0
  48. package/dist/tools/create-file.js +75 -0
  49. package/dist/tools/create-file.js.map +1 -0
  50. package/dist/tools/delete-file.d.ts +22 -0
  51. package/dist/tools/delete-file.d.ts.map +1 -0
  52. package/dist/tools/delete-file.js +41 -0
  53. package/dist/tools/delete-file.js.map +1 -0
  54. package/dist/tools/index.d.ts +3 -0
  55. package/dist/tools/index.d.ts.map +1 -1
  56. package/dist/tools/index.js +3 -0
  57. package/dist/tools/index.js.map +1 -1
  58. package/dist/tools/update-file.d.ts +55 -0
  59. package/dist/tools/update-file.d.ts.map +1 -0
  60. package/dist/tools/update-file.js +102 -0
  61. package/dist/tools/update-file.js.map +1 -0
  62. package/package.json +1 -1
@@ -20,6 +20,23 @@ declare class ApiClient {
20
20
  getFileVersions(fileId: string): Promise<any[]>;
21
21
  getFileVersion(fileId: string, versionId: string): Promise<any>;
22
22
  searchFiles(workspaceId: string, query: string, projectId?: string): Promise<any[]>;
23
+ createFile(projectId: string, data: {
24
+ title: string;
25
+ path: string;
26
+ content?: string;
27
+ folderId?: string | null;
28
+ }): Promise<any>;
29
+ updateFile(fileId: string, data: {
30
+ title?: string;
31
+ path?: string;
32
+ content?: string;
33
+ status?: 'active' | 'archived';
34
+ folderId?: string | null;
35
+ projectId?: string;
36
+ changeSummary?: string;
37
+ createVersion?: boolean;
38
+ }): Promise<any>;
39
+ deleteFile(fileId: string): Promise<any>;
23
40
  }
24
41
  export declare function initializeApiClient(config: ApiClientConfig): void;
25
42
  export declare function getApiClient(): ApiClient;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;YAIrB,OAAO;IAsBf,aAAa;IAIb,YAAY,CAAC,WAAW,EAAE,MAAM;IAKhC,WAAW,CAAC,WAAW,EAAE,MAAM;IAI/B,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKlD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAI1B,OAAO,CAAC,MAAM,EAAE,MAAM;IAItB,cAAc,CAAC,MAAM,EAAE,MAAM;IAI7B,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKhD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAKzE;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,QAE1D;AAED,wBAAgB,YAAY,IAAI,SAAS,CAKxC"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;YAIrB,OAAO;IAsBf,aAAa;IAIb,YAAY,CAAC,WAAW,EAAE,MAAM;IAKhC,WAAW,CAAC,WAAW,EAAE,MAAM;IAI/B,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKlD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAI1B,OAAO,CAAC,MAAM,EAAE,MAAM;IAItB,cAAc,CAAC,MAAM,EAAE,MAAM;IAI7B,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKhD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAOlE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;QACxC,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAOK,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB;IAOK,UAAU,CAAC,MAAM,EAAE,MAAM;CAKhC;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,QAE1D;AAED,wBAAgB,YAAY,IAAI,SAAS,CAKxC"}
@@ -61,6 +61,24 @@ class ApiClient {
61
61
  params.append('projectId', projectId);
62
62
  return this.request(`/workspaces/${workspaceId}/search?${params}`);
63
63
  }
64
+ // File write endpoints
65
+ async createFile(projectId, data) {
66
+ return this.request(`/projects/${projectId}/files`, {
67
+ method: 'POST',
68
+ body: JSON.stringify(data),
69
+ });
70
+ }
71
+ async updateFile(fileId, data) {
72
+ return this.request(`/files/${fileId}`, {
73
+ method: 'PUT',
74
+ body: JSON.stringify(data),
75
+ });
76
+ }
77
+ async deleteFile(fileId) {
78
+ return this.request(`/files/${fileId}`, {
79
+ method: 'DELETE',
80
+ });
81
+ }
64
82
  }
65
83
  let apiClientInstance = null;
66
84
  export function initializeApiClient(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,SAAS;IACL,MAAM,CAAkB;IAEhC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,QAAgB,EAAE,UAAuB,EAAE;QAClE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACpD,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACvF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,uBAAuB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,IAAI,GAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,IAAS,CAAC;IACxB,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,OAAO,CAAQ,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAM,eAAe,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAQ,eAAe,WAAW,WAAW,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAoB,EAAE,SAAiB;QACtD,OAAO,IAAI,CAAC,OAAO,CAAM,aAAa,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAQ,aAAa,SAAS,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAM,UAAU,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,OAAO,CAAM,UAAU,MAAM,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,OAAO,IAAI,CAAC,OAAO,CAAQ,UAAU,MAAM,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,SAAiB;QACpD,OAAO,IAAI,CAAC,OAAO,CAAM,UAAU,MAAM,aAAa,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,WAAW,CAAC,WAAmB,EAAE,KAAa,EAAE,SAAkB;QACtE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,IAAI,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAQ,eAAe,WAAW,WAAW,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,IAKnC;QACC,OAAO,IAAI,CAAC,OAAO,CAAM,aAAa,SAAS,QAAQ,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,IAShC;QACC,OAAO,IAAI,CAAC,OAAO,CAAM,UAAU,MAAM,EAAE,EAAE;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAM,UAAU,MAAM,EAAE,EAAE;YAC3C,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;CACF;AAED,IAAI,iBAAiB,GAAqB,IAAI,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAAC,MAAuB;IACzD,iBAAiB,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { AuthContext } from '../types.js';
2
2
  export declare function verifyAccessToken(token: string): AuthContext;
3
- export declare function getAuthContext(): Promise<AuthContext>;
3
+ export declare function getAuthContext(): Promise<AuthContext | null>;
4
4
  //# sourceMappingURL=verify-token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-token.d.ts","sourceRoot":"","sources":["../../src/auth/verify-token.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,aAAa,CAAC;AAK3D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAoB5D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CA2C3D"}
1
+ {"version":3,"file":"verify-token.d.ts","sourceRoot":"","sources":["../../src/auth/verify-token.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,aAAa,CAAC;AAK3D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAoB5D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA0ClE"}
@@ -42,7 +42,8 @@ export async function getAuthContext() {
42
42
  apiUrl = process.env.DOXHUB_API_URL || apiUrl;
43
43
  }
44
44
  if (!token) {
45
- throw new Error('No authentication configured. Run "npx @doxhub/mcp-server setup" or set DOXHUB_ACCESS_TOKEN.');
45
+ // Return null instead of throwing - let callers handle missing auth
46
+ return null;
46
47
  }
47
48
  // Initialize API client with token and URL
48
49
  initializeApiClient({
@@ -1 +1 @@
1
- {"version":3,"file":"verify-token.js","sourceRoot":"","sources":["../../src/auth/verify-token.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAe,CAAC;QAE3D,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAAM,GAAW,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,8BAA8B,CAAC;IAElF,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;YAC5B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+DAA+D;IACjE,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACxC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,mBAAmB,CAAC;QAClB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"verify-token.js","sourceRoot":"","sources":["../../src/auth/verify-token.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAe,CAAC;QAE3D,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAAM,GAAW,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,8BAA8B,CAAC;IAElF,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;YAC5B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+DAA+D;IACjE,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACxC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,oEAAoE;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAA2C;IAC3C,mBAAmB,CAAC;QAClB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function createFileCommand(options: {
2
+ projectId: string;
3
+ title: string;
4
+ path: string;
5
+ content?: string;
6
+ folderId?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=create-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-file.d.ts","sourceRoot":"","sources":["../../src/cli/create-file.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ChB"}
@@ -0,0 +1,44 @@
1
+ import { getAuthContext } from '../auth/verify-token.js';
2
+ import { getApiClient, initializeApiClient } from '../api-client.js';
3
+ import { getCurrentProfile } from './credentials.js';
4
+ export async function createFileCommand(options) {
5
+ try {
6
+ const { projectId, title, path, content, folderId } = options;
7
+ if (!projectId || !title || !path) {
8
+ console.error('❌ Required parameters missing\n');
9
+ console.error('Usage: npx @doxhub/mcp-server create-file --project <id> --title <title> --path <path> [--content <content>] [--folder <id>]\n');
10
+ process.exit(1);
11
+ }
12
+ const profile = getCurrentProfile();
13
+ if (!profile) {
14
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
15
+ process.exit(1);
16
+ }
17
+ initializeApiClient({
18
+ baseUrl: profile.apiUrl,
19
+ accessToken: profile.accessToken,
20
+ });
21
+ const auth = await getAuthContext();
22
+ if (!auth) {
23
+ console.error('❌ Authentication failed\n');
24
+ process.exit(1);
25
+ }
26
+ const apiClient = getApiClient();
27
+ const file = await apiClient.createFile(projectId, {
28
+ title,
29
+ path,
30
+ content: content || '',
31
+ folderId: folderId || null,
32
+ });
33
+ console.log('\n✅ File created successfully!\n');
34
+ console.log(` Title: ${file.title}`);
35
+ console.log(` ID: ${file.id}`);
36
+ console.log(` Path: ${file.path}`);
37
+ console.log(` Version: ${file.currentVersion}\n`);
38
+ }
39
+ catch (error) {
40
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
41
+ process.exit(1);
42
+ }
43
+ }
44
+ //# sourceMappingURL=create-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../src/cli/create-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAMvC;IACC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE9D,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,gIAAgI,CAAC,CAAC;YAChJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE;YACjD,KAAK;YACL,IAAI;YACJ,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,QAAQ,EAAE,QAAQ,IAAI,IAAI;SAC3B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function deleteFileCommand(fileId: string, options?: {
2
+ force?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=delete-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-file.d.ts","sourceRoot":"","sources":["../../src/cli/delete-file.ts"],"names":[],"mappings":"AAmBA,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDrB"}
@@ -0,0 +1,62 @@
1
+ import readline from 'readline';
2
+ import { getAuthContext } from '../auth/verify-token.js';
3
+ import { getApiClient, initializeApiClient } from '../api-client.js';
4
+ import { getCurrentProfile } from './credentials.js';
5
+ async function askConfirmation(question) {
6
+ const rl = readline.createInterface({
7
+ input: process.stdin,
8
+ output: process.stdout,
9
+ });
10
+ return new Promise((resolve) => {
11
+ rl.question(`${question} (y/n): `, (answer) => {
12
+ rl.close();
13
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
14
+ });
15
+ });
16
+ }
17
+ export async function deleteFileCommand(fileId, options = {}) {
18
+ try {
19
+ if (!fileId) {
20
+ console.error('❌ File ID required\n');
21
+ console.error('Usage: npx @doxhub/mcp-server delete-file <fileId> [--force]\n');
22
+ process.exit(1);
23
+ }
24
+ const profile = getCurrentProfile();
25
+ if (!profile) {
26
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
27
+ process.exit(1);
28
+ }
29
+ initializeApiClient({
30
+ baseUrl: profile.apiUrl,
31
+ accessToken: profile.accessToken,
32
+ });
33
+ const auth = await getAuthContext();
34
+ if (!auth) {
35
+ console.error('❌ Authentication failed\n');
36
+ process.exit(1);
37
+ }
38
+ // Get file info first
39
+ const apiClient = getApiClient();
40
+ const file = await apiClient.getFile(fileId);
41
+ console.log('\n⚠️ You are about to delete this file:\n');
42
+ console.log(` Title: ${file.title}`);
43
+ console.log(` Path: ${file.path}`);
44
+ console.log(` ID: ${file.id}\n`);
45
+ console.log('The file will be moved to trash and can be restored later.\n');
46
+ // Ask for confirmation unless --force flag is used
47
+ if (!options.force) {
48
+ const confirmed = await askConfirmation('Are you sure?');
49
+ if (!confirmed) {
50
+ console.log('\nCancelled\n');
51
+ return;
52
+ }
53
+ }
54
+ await apiClient.deleteFile(fileId);
55
+ console.log('\n✅ File deleted successfully (moved to trash)\n');
56
+ }
57
+ catch (error) {
58
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
59
+ process.exit(1);
60
+ }
61
+ }
62
+ //# sourceMappingURL=delete-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-file.js","sourceRoot":"","sources":["../../src/cli/delete-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function getFileCommand(fileId: string, options?: {
2
+ contentOnly?: boolean;
3
+ metadata?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=get-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file.d.ts","sourceRoot":"","sources":["../../src/cli/get-file.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrB"}
@@ -0,0 +1,61 @@
1
+ import { getAuthContext } from '../auth/verify-token.js';
2
+ import { getApiClient, initializeApiClient } from '../api-client.js';
3
+ import { getCurrentProfile } from './credentials.js';
4
+ export async function getFileCommand(fileId, options = {}) {
5
+ try {
6
+ if (!fileId) {
7
+ console.error('❌ File ID required\n');
8
+ console.error('Usage: npx @doxhub/mcp-server get-file <fileId> [--content-only] [--metadata]\n');
9
+ process.exit(1);
10
+ }
11
+ const profile = getCurrentProfile();
12
+ if (!profile) {
13
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
14
+ process.exit(1);
15
+ }
16
+ initializeApiClient({
17
+ baseUrl: profile.apiUrl,
18
+ accessToken: profile.accessToken,
19
+ });
20
+ const auth = await getAuthContext();
21
+ if (!auth) {
22
+ console.error('❌ Authentication failed\n');
23
+ process.exit(1);
24
+ }
25
+ const apiClient = getApiClient();
26
+ const file = await apiClient.getFile(fileId);
27
+ // Content only mode - just output the file content
28
+ if (options.contentOnly) {
29
+ console.log(file.content || '');
30
+ return;
31
+ }
32
+ // Metadata mode - show file details without content
33
+ if (options.metadata) {
34
+ console.log('\n📄 File Details:\n');
35
+ console.log(` Title: ${file.title}`);
36
+ console.log(` ID: ${file.id}`);
37
+ console.log(` Path: ${file.path}`);
38
+ console.log(` Status: ${file.status}`);
39
+ console.log(` Version: ${file.currentVersion}`);
40
+ console.log(` Project: ${file.projectName || file.projectId}`);
41
+ console.log(` Created: ${new Date(file.createdAt).toLocaleString()}`);
42
+ console.log(` Updated: ${new Date(file.updatedAt).toLocaleString()}`);
43
+ console.log(` Content length: ${file.content?.length || 0} characters\n`);
44
+ return;
45
+ }
46
+ // Default mode - show both metadata and content
47
+ console.log('\n📄 File Details:\n');
48
+ console.log(` Title: ${file.title}`);
49
+ console.log(` Path: ${file.path}`);
50
+ console.log(` ID: ${file.id}`);
51
+ console.log(` Version: ${file.currentVersion}`);
52
+ console.log('\n─────────────────────────────────────────────\n');
53
+ console.log(file.content || '(empty file)');
54
+ console.log('\n─────────────────────────────────────────────\n');
55
+ }
56
+ catch (error) {
57
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
58
+ process.exit(1);
59
+ }
60
+ }
61
+ //# sourceMappingURL=get-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file.js","sourceRoot":"","sources":["../../src/cli/get-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,UAGjD,EAAE;IACJ,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;YACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7C,mDAAmD;QACnD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listFilesCommand(projectId: string): Promise<void>;
2
+ //# sourceMappingURL=list-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.d.ts","sourceRoot":"","sources":["../../src/cli/list-files.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvE"}
@@ -0,0 +1,46 @@
1
+ import { getAuthContext } from '../auth/verify-token.js';
2
+ import { getApiClient, initializeApiClient } from '../api-client.js';
3
+ import { getCurrentProfile } from './credentials.js';
4
+ export async function listFilesCommand(projectId) {
5
+ try {
6
+ if (!projectId) {
7
+ console.error('❌ Project ID required\n');
8
+ console.error('Usage: npx @doxhub/mcp-server list-files <projectId>\n');
9
+ process.exit(1);
10
+ }
11
+ const profile = getCurrentProfile();
12
+ if (!profile) {
13
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
14
+ process.exit(1);
15
+ }
16
+ initializeApiClient({
17
+ baseUrl: profile.apiUrl,
18
+ accessToken: profile.accessToken,
19
+ });
20
+ const auth = await getAuthContext();
21
+ if (!auth) {
22
+ console.error('❌ Authentication failed\n');
23
+ process.exit(1);
24
+ }
25
+ const apiClient = getApiClient();
26
+ const files = await apiClient.getFiles(projectId);
27
+ if (files.length === 0) {
28
+ console.log('No files found\n');
29
+ return;
30
+ }
31
+ console.log('\n📄 Files:\n');
32
+ files.forEach((file) => {
33
+ console.log(` ${file.title}`);
34
+ console.log(` ID: ${file.id}`);
35
+ console.log(` Path: ${file.path}`);
36
+ console.log(` Version: ${file.currentVersion}`);
37
+ console.log(` Updated: ${new Date(file.updatedAt).toLocaleString()}`);
38
+ console.log('');
39
+ });
40
+ }
41
+ catch (error) {
42
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
43
+ process.exit(1);
44
+ }
45
+ }
46
+ //# sourceMappingURL=list-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-files.js","sourceRoot":"","sources":["../../src/cli/list-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IACtD,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listProjectsCommand(workspaceId?: string): Promise<void>;
2
+ //# sourceMappingURL=list-projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/cli/list-projects.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD7E"}
@@ -0,0 +1,52 @@
1
+ import { getAuthContext } from '../auth/verify-token.js';
2
+ import { getApiClient, initializeApiClient } from '../api-client.js';
3
+ import { getCurrentProfile } from './credentials.js';
4
+ export async function listProjectsCommand(workspaceId) {
5
+ try {
6
+ const profile = getCurrentProfile();
7
+ if (!profile) {
8
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
9
+ process.exit(1);
10
+ }
11
+ initializeApiClient({
12
+ baseUrl: profile.apiUrl,
13
+ accessToken: profile.accessToken,
14
+ });
15
+ const auth = await getAuthContext();
16
+ if (!auth) {
17
+ console.error('❌ Authentication failed\n');
18
+ process.exit(1);
19
+ }
20
+ const apiClient = getApiClient();
21
+ // If no workspace ID provided, use the one from profile or get first workspace
22
+ let targetWorkspaceId = workspaceId || profile.workspaceId;
23
+ if (!targetWorkspaceId) {
24
+ const workspaces = await apiClient.getWorkspaces();
25
+ if (workspaces.length === 0) {
26
+ console.error('❌ No workspaces found\n');
27
+ process.exit(1);
28
+ }
29
+ targetWorkspaceId = workspaces[0].id;
30
+ console.log(`Using workspace: ${workspaces[0].name}\n`);
31
+ }
32
+ const projects = await apiClient.getProjects(targetWorkspaceId);
33
+ if (projects.length === 0) {
34
+ console.log('No projects found\n');
35
+ return;
36
+ }
37
+ console.log('\n📂 Projects:\n');
38
+ projects.forEach((project) => {
39
+ console.log(` ${project.name}`);
40
+ console.log(` ID: ${project.id}`);
41
+ if (project.description) {
42
+ console.log(` Description: ${project.description}`);
43
+ }
44
+ console.log('');
45
+ });
46
+ }
47
+ catch (error) {
48
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
49
+ process.exit(1);
50
+ }
51
+ }
52
+ //# sourceMappingURL=list-projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/cli/list-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAoB;IAC5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QAEjC,+EAA+E;QAC/E,IAAI,iBAAiB,GAAG,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;QAE3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,CAAC;YACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,iBAAkB,CAAC,CAAC;QAEjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listWorkspacesCommand(): Promise<void>;
2
+ //# sourceMappingURL=list-workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-workspaces.d.ts","sourceRoot":"","sources":["../../src/cli/list-workspaces.ts"],"names":[],"mappings":"AAIA,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC3D"}
@@ -0,0 +1,41 @@
1
+ import { getAuthContext } from '../auth/verify-token.js';
2
+ import { getApiClient, initializeApiClient } from '../api-client.js';
3
+ import { getCurrentProfile } from './credentials.js';
4
+ export async function listWorkspacesCommand() {
5
+ try {
6
+ const profile = getCurrentProfile();
7
+ if (!profile) {
8
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
9
+ process.exit(1);
10
+ }
11
+ initializeApiClient({
12
+ baseUrl: profile.apiUrl,
13
+ accessToken: profile.accessToken,
14
+ });
15
+ const auth = await getAuthContext();
16
+ if (!auth) {
17
+ console.error('❌ Authentication failed\n');
18
+ process.exit(1);
19
+ }
20
+ const apiClient = getApiClient();
21
+ const workspaces = await apiClient.getWorkspaces();
22
+ if (workspaces.length === 0) {
23
+ console.log('No workspaces found\n');
24
+ return;
25
+ }
26
+ console.log('\n📁 Your Workspaces:\n');
27
+ workspaces.forEach((ws) => {
28
+ console.log(` ${ws.name}`);
29
+ console.log(` ID: ${ws.id}`);
30
+ if (ws.description) {
31
+ console.log(` Description: ${ws.description}`);
32
+ }
33
+ console.log('');
34
+ });
35
+ }
36
+ catch (error) {
37
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
38
+ process.exit(1);
39
+ }
40
+ }
41
+ //# sourceMappingURL=list-workspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-workspaces.js","sourceRoot":"","sources":["../../src/cli/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,CAAC;QAEnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function searchCommand(query: string, options?: {
2
+ workspaceId?: string;
3
+ projectId?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrB"}
@@ -0,0 +1,59 @@
1
+ import { getAuthContext } from '../auth/verify-token.js';
2
+ import { getApiClient, initializeApiClient } from '../api-client.js';
3
+ import { getCurrentProfile } from './credentials.js';
4
+ export async function searchCommand(query, options = {}) {
5
+ try {
6
+ if (!query) {
7
+ console.error('❌ Search query required\n');
8
+ console.error('Usage: npx @doxhub/mcp-server search <query> [--workspace <id>] [--project <id>]\n');
9
+ process.exit(1);
10
+ }
11
+ const profile = getCurrentProfile();
12
+ if (!profile) {
13
+ console.error('❌ Not authenticated. Run "npx @doxhub/mcp-server setup" first.\n');
14
+ process.exit(1);
15
+ }
16
+ initializeApiClient({
17
+ baseUrl: profile.apiUrl,
18
+ accessToken: profile.accessToken,
19
+ });
20
+ const auth = await getAuthContext();
21
+ if (!auth) {
22
+ console.error('❌ Authentication failed\n');
23
+ process.exit(1);
24
+ }
25
+ const apiClient = getApiClient();
26
+ // Get workspace ID
27
+ let workspaceId = options.workspaceId || profile.workspaceId;
28
+ if (!workspaceId) {
29
+ const workspaces = await apiClient.getWorkspaces();
30
+ if (workspaces.length === 0) {
31
+ console.error('❌ No workspaces found\n');
32
+ process.exit(1);
33
+ }
34
+ workspaceId = workspaces[0].id;
35
+ }
36
+ const results = await apiClient.searchFiles(workspaceId, query, options.projectId);
37
+ if (results.length === 0) {
38
+ console.log(`\nNo results found for: "${query}"\n`);
39
+ return;
40
+ }
41
+ console.log(`\n🔍 Search results for: "${query}"\n`);
42
+ console.log(`Found ${results.length} result(s)\n`);
43
+ results.forEach((result, index) => {
44
+ console.log(`${index + 1}. ${result.title}`);
45
+ console.log(` ID: ${result.id}`);
46
+ console.log(` Path: ${result.path}`);
47
+ console.log(` Project: ${result.projectName || result.projectId}`);
48
+ if (result.snippet) {
49
+ console.log(` Preview: ${result.snippet.substring(0, 100)}...`);
50
+ }
51
+ console.log('');
52
+ });
53
+ }
54
+ catch (error) {
55
+ console.error(`❌ Error: ${error instanceof Error ? error.message : error}\n`);
56
+ process.exit(1);
57
+ }
58
+ }
59
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function updateFileCommand(fileId: string, options: {
2
+ title?: string;
3
+ path?: string;
4
+ content?: string;
5
+ status?: 'active' | 'archived';
6
+ changeSummary?: string;
7
+ createVersion?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=update-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-file.d.ts","sourceRoot":"","sources":["../../src/cli/update-file.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACA,OAAO,CAAC,IAAI,CAAC,CAwDf"}