@awolve/myoffice 1.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 (94) hide show
  1. package/README.md +271 -0
  2. package/dist/auth/cache-plugin.d.ts +20 -0
  3. package/dist/auth/cache-plugin.d.ts.map +1 -0
  4. package/dist/auth/cache-plugin.js +49 -0
  5. package/dist/auth/cache-plugin.js.map +1 -0
  6. package/dist/auth/config.d.ts +40 -0
  7. package/dist/auth/config.d.ts.map +1 -0
  8. package/dist/auth/config.js +135 -0
  9. package/dist/auth/config.js.map +1 -0
  10. package/dist/auth/device-code.d.ts +2 -0
  11. package/dist/auth/device-code.d.ts.map +1 -0
  12. package/dist/auth/device-code.js +40 -0
  13. package/dist/auth/device-code.js.map +1 -0
  14. package/dist/auth/index.d.ts +4 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +4 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/auth/login.d.ts +7 -0
  19. package/dist/auth/login.d.ts.map +1 -0
  20. package/dist/auth/login.js +22 -0
  21. package/dist/auth/login.js.map +1 -0
  22. package/dist/auth/token-manager.d.ts +4 -0
  23. package/dist/auth/token-manager.d.ts.map +1 -0
  24. package/dist/auth/token-manager.js +85 -0
  25. package/dist/auth/token-manager.js.map +1 -0
  26. package/dist/cli/formatter.d.ts +5 -0
  27. package/dist/cli/formatter.d.ts.map +1 -0
  28. package/dist/cli/formatter.js +317 -0
  29. package/dist/cli/formatter.js.map +1 -0
  30. package/dist/cli.d.ts +3 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +973 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/core/handler.d.ts +8 -0
  35. package/dist/core/handler.d.ts.map +1 -0
  36. package/dist/core/handler.js +327 -0
  37. package/dist/core/handler.js.map +1 -0
  38. package/dist/index.d.ts +3 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +924 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/tools/calendar.d.ts +124 -0
  43. package/dist/tools/calendar.d.ts.map +1 -0
  44. package/dist/tools/calendar.js +129 -0
  45. package/dist/tools/calendar.js.map +1 -0
  46. package/dist/tools/chats.d.ts +66 -0
  47. package/dist/tools/chats.d.ts.map +1 -0
  48. package/dist/tools/chats.js +102 -0
  49. package/dist/tools/chats.js.map +1 -0
  50. package/dist/tools/contacts.d.ts +138 -0
  51. package/dist/tools/contacts.d.ts.map +1 -0
  52. package/dist/tools/contacts.js +189 -0
  53. package/dist/tools/contacts.js.map +1 -0
  54. package/dist/tools/index.d.ts +10 -0
  55. package/dist/tools/index.d.ts.map +1 -0
  56. package/dist/tools/index.js +10 -0
  57. package/dist/tools/index.js.map +1 -0
  58. package/dist/tools/mail.d.ts +138 -0
  59. package/dist/tools/mail.d.ts.map +1 -0
  60. package/dist/tools/mail.js +187 -0
  61. package/dist/tools/mail.js.map +1 -0
  62. package/dist/tools/onedrive.d.ts +125 -0
  63. package/dist/tools/onedrive.d.ts.map +1 -0
  64. package/dist/tools/onedrive.js +203 -0
  65. package/dist/tools/onedrive.js.map +1 -0
  66. package/dist/tools/planner.d.ts +390 -0
  67. package/dist/tools/planner.d.ts.map +1 -0
  68. package/dist/tools/planner.js +693 -0
  69. package/dist/tools/planner.js.map +1 -0
  70. package/dist/tools/sharepoint.d.ts +138 -0
  71. package/dist/tools/sharepoint.d.ts.map +1 -0
  72. package/dist/tools/sharepoint.js +156 -0
  73. package/dist/tools/sharepoint.js.map +1 -0
  74. package/dist/tools/tasks.d.ts +107 -0
  75. package/dist/tools/tasks.d.ts.map +1 -0
  76. package/dist/tools/tasks.js +131 -0
  77. package/dist/tools/tasks.js.map +1 -0
  78. package/dist/tools/teams.d.ts +66 -0
  79. package/dist/tools/teams.d.ts.map +1 -0
  80. package/dist/tools/teams.js +69 -0
  81. package/dist/tools/teams.js.map +1 -0
  82. package/dist/utils/graph-client.d.ts +15 -0
  83. package/dist/utils/graph-client.d.ts.map +1 -0
  84. package/dist/utils/graph-client.js +126 -0
  85. package/dist/utils/graph-client.js.map +1 -0
  86. package/dist/utils/signature.d.ts +2 -0
  87. package/dist/utils/signature.d.ts.map +1 -0
  88. package/dist/utils/signature.js +17 -0
  89. package/dist/utils/signature.js.map +1 -0
  90. package/dist/utils/version.d.ts +2 -0
  91. package/dist/utils/version.d.ts.map +1 -0
  92. package/dist/utils/version.js +20 -0
  93. package/dist/utils/version.js.map +1 -0
  94. package/package.json +55 -0
@@ -0,0 +1,125 @@
1
+ import { z } from 'zod';
2
+ export declare const listFilesSchema: z.ZodObject<{
3
+ path: z.ZodOptional<z.ZodString>;
4
+ maxItems: z.ZodOptional<z.ZodNumber>;
5
+ }, "strip", z.ZodTypeAny, {
6
+ maxItems?: number | undefined;
7
+ path?: string | undefined;
8
+ }, {
9
+ maxItems?: number | undefined;
10
+ path?: string | undefined;
11
+ }>;
12
+ export declare const getFileSchema: z.ZodObject<{
13
+ path: z.ZodString;
14
+ }, "strip", z.ZodTypeAny, {
15
+ path: string;
16
+ }, {
17
+ path: string;
18
+ }>;
19
+ export declare const searchFilesSchema: z.ZodObject<{
20
+ query: z.ZodString;
21
+ maxItems: z.ZodOptional<z.ZodNumber>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ query: string;
24
+ maxItems?: number | undefined;
25
+ }, {
26
+ query: string;
27
+ maxItems?: number | undefined;
28
+ }>;
29
+ export declare const readFileContentSchema: z.ZodObject<{
30
+ path: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ path: string;
33
+ }, {
34
+ path: string;
35
+ }>;
36
+ export declare const createFolderSchema: z.ZodObject<{
37
+ name: z.ZodString;
38
+ parentPath: z.ZodOptional<z.ZodString>;
39
+ }, "strip", z.ZodTypeAny, {
40
+ name: string;
41
+ parentPath?: string | undefined;
42
+ }, {
43
+ name: string;
44
+ parentPath?: string | undefined;
45
+ }>;
46
+ export declare const listSharedWithMeSchema: z.ZodObject<{
47
+ maxItems: z.ZodOptional<z.ZodNumber>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ maxItems?: number | undefined;
50
+ }, {
51
+ maxItems?: number | undefined;
52
+ }>;
53
+ export declare const uploadFileSchema: z.ZodObject<{
54
+ localPath: z.ZodString;
55
+ remotePath: z.ZodOptional<z.ZodString>;
56
+ }, "strip", z.ZodTypeAny, {
57
+ localPath: string;
58
+ remotePath?: string | undefined;
59
+ }, {
60
+ localPath: string;
61
+ remotePath?: string | undefined;
62
+ }>;
63
+ export declare function listFiles(params: z.infer<typeof listFilesSchema>): Promise<{
64
+ id: string;
65
+ name: string;
66
+ type: string;
67
+ size: number | undefined;
68
+ mimeType: string | undefined;
69
+ childCount: number | undefined;
70
+ created: string;
71
+ modified: string;
72
+ webUrl: string;
73
+ }[]>;
74
+ export declare function getFile(params: z.infer<typeof getFileSchema>): Promise<{
75
+ id: string;
76
+ name: string;
77
+ size: number | undefined;
78
+ mimeType: string | undefined;
79
+ created: string;
80
+ modified: string;
81
+ webUrl: string;
82
+ }>;
83
+ export declare function searchFiles(params: z.infer<typeof searchFilesSchema>): Promise<{
84
+ id: string;
85
+ name: string;
86
+ type: string;
87
+ size: number | undefined;
88
+ mimeType: string | undefined;
89
+ webUrl: string;
90
+ }[]>;
91
+ export declare function readFileContent(params: z.infer<typeof readFileContentSchema>): Promise<{
92
+ name: string;
93
+ size: number | undefined;
94
+ mimeType: string | undefined;
95
+ content: string;
96
+ }>;
97
+ export declare function createFolder(params: z.infer<typeof createFolderSchema>): Promise<{
98
+ success: boolean;
99
+ folderId: string;
100
+ name: string;
101
+ webUrl: string;
102
+ }>;
103
+ export declare function listSharedWithMe(params: z.infer<typeof listSharedWithMeSchema>): Promise<{
104
+ id: string;
105
+ name: string;
106
+ type: string;
107
+ size: number | undefined;
108
+ mimeType: string | undefined;
109
+ childCount: number | undefined;
110
+ created: string;
111
+ modified: string;
112
+ webUrl: string;
113
+ remoteDriveId: string | undefined;
114
+ remoteDriveType: string | undefined;
115
+ remoteItemId: string | undefined;
116
+ }[]>;
117
+ export declare function uploadFile(params: z.infer<typeof uploadFileSchema>): Promise<{
118
+ success: boolean;
119
+ id: string;
120
+ name: string;
121
+ size: number | undefined;
122
+ webUrl: string;
123
+ mimeType: string | undefined;
124
+ }>;
125
+ //# sourceMappingURL=onedrive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive.d.ts","sourceRoot":"","sources":["../../src/tools/onedrive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,eAAe;;;;;;;;;EAG1B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;EAEhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;EAM3B,CAAC;AAGH,wBAAsB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;KAsBtE;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC;;;;;;;;GAgBlE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;;;;;;;KAe1E;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC;;;;;GAgClF;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC;;;;;GAsB5E;AAaD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;;;;;;;;;;;;;KAsBpF;AAgCD,wBAAsB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC;;;;;;;GAyCxE"}
@@ -0,0 +1,203 @@
1
+ import { z } from 'zod';
2
+ import { readFile } from 'fs/promises';
3
+ import { basename } from 'path';
4
+ import { graphRequest, graphList, graphUpload, graphUploadLarge } from '../utils/graph-client.js';
5
+ // Schemas
6
+ export const listFilesSchema = z.object({
7
+ path: z.string().optional().describe('Folder path (e.g., "Documents/Projects"). Default: root'),
8
+ maxItems: z.number().optional().describe('Maximum number of items. Default: 50'),
9
+ });
10
+ export const getFileSchema = z.object({
11
+ path: z.string().describe('File path (e.g., "Documents/report.pdf")'),
12
+ });
13
+ export const searchFilesSchema = z.object({
14
+ query: z.string().describe('Search query'),
15
+ maxItems: z.number().optional().describe('Maximum results. Default: 25'),
16
+ });
17
+ export const readFileContentSchema = z.object({
18
+ path: z.string().describe('File path to read (works best with text files)'),
19
+ });
20
+ export const createFolderSchema = z.object({
21
+ name: z.string().describe('Folder name'),
22
+ parentPath: z.string().optional().describe('Parent folder path. Default: root'),
23
+ });
24
+ export const listSharedWithMeSchema = z.object({
25
+ maxItems: z.number().optional().describe('Maximum number of items. Default: 50'),
26
+ });
27
+ export const uploadFileSchema = z.object({
28
+ localPath: z.string().describe('Local file path to upload'),
29
+ remotePath: z
30
+ .string()
31
+ .optional()
32
+ .describe('Destination path in OneDrive (e.g., "Documents/file.pdf"). If omitted, uploads to root with original filename'),
33
+ });
34
+ // Tool implementations
35
+ export async function listFiles(params) {
36
+ const { path = '', maxItems = 50 } = params;
37
+ const apiPath = path
38
+ ? `/me/drive/root:/${path}:/children`
39
+ : '/me/drive/root/children';
40
+ const fullPath = `${apiPath}?$select=id,name,size,createdDateTime,lastModifiedDateTime,webUrl,folder,file&$top=${maxItems}`;
41
+ const items = await graphList(fullPath, { maxItems });
42
+ return items.map((item) => ({
43
+ id: item.id,
44
+ name: item.name,
45
+ type: item.folder ? 'folder' : 'file',
46
+ size: item.size,
47
+ mimeType: item.file?.mimeType,
48
+ childCount: item.folder?.childCount,
49
+ created: item.createdDateTime,
50
+ modified: item.lastModifiedDateTime,
51
+ webUrl: item.webUrl,
52
+ }));
53
+ }
54
+ export async function getFile(params) {
55
+ const { path } = params;
56
+ const item = await graphRequest(`/me/drive/root:/${path}?$select=id,name,size,createdDateTime,lastModifiedDateTime,webUrl,file`);
57
+ return {
58
+ id: item.id,
59
+ name: item.name,
60
+ size: item.size,
61
+ mimeType: item.file?.mimeType,
62
+ created: item.createdDateTime,
63
+ modified: item.lastModifiedDateTime,
64
+ webUrl: item.webUrl,
65
+ };
66
+ }
67
+ export async function searchFiles(params) {
68
+ const { query, maxItems = 25 } = params;
69
+ const path = `/me/drive/root/search(q='${encodeURIComponent(query)}')?$select=id,name,size,webUrl,file,folder&$top=${maxItems}`;
70
+ const items = await graphList(path, { maxItems });
71
+ return items.map((item) => ({
72
+ id: item.id,
73
+ name: item.name,
74
+ type: item.folder ? 'folder' : 'file',
75
+ size: item.size,
76
+ mimeType: item.file?.mimeType,
77
+ webUrl: item.webUrl,
78
+ }));
79
+ }
80
+ export async function readFileContent(params) {
81
+ const { path } = params;
82
+ // Get the file metadata with download URL
83
+ const item = await graphRequest(`/me/drive/root:/${path}?$select=id,name,size,file,@microsoft.graph.downloadUrl`);
84
+ const downloadUrl = item['@microsoft.graph.downloadUrl'];
85
+ if (!downloadUrl) {
86
+ throw new Error('Could not get download URL for file');
87
+ }
88
+ // Check file size (limit to 1MB for text content)
89
+ if (item.size && item.size > 1024 * 1024) {
90
+ throw new Error('File too large to read directly. Use download URL instead.');
91
+ }
92
+ // Fetch the content
93
+ const response = await fetch(downloadUrl);
94
+ if (!response.ok) {
95
+ throw new Error(`Failed to download file: ${response.statusText}`);
96
+ }
97
+ const content = await response.text();
98
+ return {
99
+ name: item.name,
100
+ size: item.size,
101
+ mimeType: item.file?.mimeType,
102
+ content,
103
+ };
104
+ }
105
+ export async function createFolder(params) {
106
+ const { name, parentPath = '' } = params;
107
+ const apiPath = parentPath
108
+ ? `/me/drive/root:/${parentPath}:/children`
109
+ : '/me/drive/root/children';
110
+ const created = await graphRequest(apiPath, {
111
+ method: 'POST',
112
+ body: {
113
+ name,
114
+ folder: {},
115
+ '@microsoft.graph.conflictBehavior': 'rename',
116
+ },
117
+ });
118
+ return {
119
+ success: true,
120
+ folderId: created.id,
121
+ name: created.name,
122
+ webUrl: created.webUrl,
123
+ };
124
+ }
125
+ export async function listSharedWithMe(params) {
126
+ const { maxItems = 50 } = params;
127
+ const path = `/me/drive/sharedWithMe?$select=id,name,size,createdDateTime,lastModifiedDateTime,webUrl,folder,file,remoteItem&$top=${maxItems}`;
128
+ const items = await graphList(path, { maxItems });
129
+ return items.map((item) => ({
130
+ id: item.id,
131
+ name: item.name,
132
+ type: item.folder ? 'folder' : 'file',
133
+ size: item.size,
134
+ mimeType: item.file?.mimeType,
135
+ childCount: item.folder?.childCount,
136
+ created: item.createdDateTime,
137
+ modified: item.lastModifiedDateTime,
138
+ webUrl: item.webUrl,
139
+ // Include remote item info for accessing the file via its source drive
140
+ remoteDriveId: item.remoteItem?.parentReference?.driveId,
141
+ remoteDriveType: item.remoteItem?.parentReference?.driveType,
142
+ remoteItemId: item.remoteItem?.id,
143
+ }));
144
+ }
145
+ // MIME type detection from file extension
146
+ const MIME_TYPES = {
147
+ '.pdf': 'application/pdf',
148
+ '.doc': 'application/msword',
149
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
150
+ '.xls': 'application/vnd.ms-excel',
151
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
152
+ '.ppt': 'application/vnd.ms-powerpoint',
153
+ '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
154
+ '.txt': 'text/plain',
155
+ '.csv': 'text/csv',
156
+ '.json': 'application/json',
157
+ '.xml': 'application/xml',
158
+ '.html': 'text/html',
159
+ '.htm': 'text/html',
160
+ '.png': 'image/png',
161
+ '.jpg': 'image/jpeg',
162
+ '.jpeg': 'image/jpeg',
163
+ '.gif': 'image/gif',
164
+ '.svg': 'image/svg+xml',
165
+ '.zip': 'application/zip',
166
+ '.mp4': 'video/mp4',
167
+ '.mp3': 'audio/mpeg',
168
+ };
169
+ function getMimeType(filename) {
170
+ const ext = filename.toLowerCase().match(/\.[^.]+$/)?.[0] || '';
171
+ return MIME_TYPES[ext] || 'application/octet-stream';
172
+ }
173
+ export async function uploadFile(params) {
174
+ const { localPath, remotePath } = params;
175
+ // Read the local file
176
+ const content = await readFile(localPath);
177
+ // Determine the destination path
178
+ const filename = basename(localPath);
179
+ const destPath = remotePath || filename;
180
+ // Get MIME type
181
+ const contentType = getMimeType(filename);
182
+ // Choose upload method based on file size
183
+ // Simple upload for files <= 4MB, resumable for larger
184
+ const MAX_SIMPLE_UPLOAD = 4 * 1024 * 1024;
185
+ let uploaded;
186
+ if (content.length <= MAX_SIMPLE_UPLOAD) {
187
+ // Simple upload (single request)
188
+ uploaded = await graphUpload(`/me/drive/root:/${destPath}:/content`, content, { contentType });
189
+ }
190
+ else {
191
+ // Resumable upload for large files
192
+ uploaded = await graphUploadLarge(`/me/drive/root:/${destPath}`, content);
193
+ }
194
+ return {
195
+ success: true,
196
+ id: uploaded.id,
197
+ name: uploaded.name,
198
+ size: uploaded.size,
199
+ webUrl: uploaded.webUrl,
200
+ mimeType: uploaded.file?.mimeType,
201
+ };
202
+ }
203
+ //# sourceMappingURL=onedrive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive.js","sourceRoot":"","sources":["../../src/tools/onedrive.ts"],"names":[],"mappings":"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"}