@rnsk/toolkits 0.0.4 → 0.0.6

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 (109) hide show
  1. package/README.md +13 -8
  2. package/dist/core/index.d.ts +1 -1
  3. package/dist/core/types.d.ts +43 -1
  4. package/dist/core/validate.d.ts +1 -1
  5. package/dist/core/validate.js +14 -2
  6. package/dist/index.d.ts +5 -1
  7. package/dist/index.js +9 -1
  8. package/dist/toolkits/aws/icon.d.ts +5 -0
  9. package/dist/toolkits/aws/icon.js +41 -0
  10. package/dist/toolkits/aws/manifest.d.ts +3 -0
  11. package/dist/toolkits/aws/manifest.js +27 -0
  12. package/dist/toolkits/aws/tools/client.d.ts +13 -0
  13. package/dist/toolkits/aws/tools/client.js +25 -0
  14. package/dist/toolkits/aws/tools/cloudwatch/filter-log-events.d.ts +26 -0
  15. package/dist/toolkits/aws/tools/cloudwatch/filter-log-events.js +45 -0
  16. package/dist/toolkits/aws/tools/cloudwatch/get-metric-data.d.ts +35 -0
  17. package/dist/toolkits/aws/tools/cloudwatch/get-metric-data.js +62 -0
  18. package/dist/toolkits/aws/tools/cloudwatch/list-alarms.d.ts +29 -0
  19. package/dist/toolkits/aws/tools/cloudwatch/list-alarms.js +46 -0
  20. package/dist/toolkits/aws/tools/cloudwatch/list-log-groups.d.ts +25 -0
  21. package/dist/toolkits/aws/tools/cloudwatch/list-log-groups.js +38 -0
  22. package/dist/toolkits/aws/tools/ec2/get-instance.d.ts +65 -0
  23. package/dist/toolkits/aws/tools/ec2/get-instance.js +46 -0
  24. package/dist/toolkits/aws/tools/ec2/list-instances.d.ts +30 -0
  25. package/dist/toolkits/aws/tools/ec2/list-instances.js +46 -0
  26. package/dist/toolkits/aws/tools/ec2/start-instance.d.ts +24 -0
  27. package/dist/toolkits/aws/tools/ec2/start-instance.js +31 -0
  28. package/dist/toolkits/aws/tools/ec2/stop-instance.d.ts +24 -0
  29. package/dist/toolkits/aws/tools/ec2/stop-instance.js +31 -0
  30. package/dist/toolkits/aws/tools/index.d.ts +273 -0
  31. package/dist/toolkits/aws/tools/index.js +68 -0
  32. package/dist/toolkits/gcp/icon.d.ts +5 -0
  33. package/dist/toolkits/gcp/icon.js +5 -0
  34. package/dist/toolkits/gcp/manifest.d.ts +3 -0
  35. package/dist/toolkits/gcp/manifest.js +27 -0
  36. package/dist/toolkits/gcp/tools/client.d.ts +12 -0
  37. package/dist/toolkits/gcp/tools/client.js +24 -0
  38. package/dist/toolkits/gcp/tools/compute/get-instance.d.ts +36 -0
  39. package/dist/toolkits/gcp/tools/compute/get-instance.js +37 -0
  40. package/dist/toolkits/gcp/tools/compute/list-instances.d.ts +20 -0
  41. package/dist/toolkits/gcp/tools/compute/list-instances.js +62 -0
  42. package/dist/toolkits/gcp/tools/compute/start-instance.d.ts +27 -0
  43. package/dist/toolkits/gcp/tools/compute/start-instance.js +29 -0
  44. package/dist/toolkits/gcp/tools/compute/stop-instance.d.ts +27 -0
  45. package/dist/toolkits/gcp/tools/compute/stop-instance.js +29 -0
  46. package/dist/toolkits/gcp/tools/index.d.ts +162 -0
  47. package/dist/toolkits/gcp/tools/index.js +52 -0
  48. package/dist/toolkits/gcp/tools/monitoring/get-metrics.d.ts +26 -0
  49. package/dist/toolkits/gcp/tools/monitoring/get-metrics.js +53 -0
  50. package/dist/toolkits/gcp/tools/monitoring/list-metric-descriptors.d.ts +24 -0
  51. package/dist/toolkits/gcp/tools/monitoring/list-metric-descriptors.js +40 -0
  52. package/dist/toolkits/gmail/manifest.js +1 -1
  53. package/dist/toolkits/google-calendar/manifest.js +1 -6
  54. package/dist/toolkits/google-docs/icon.d.ts +5 -0
  55. package/dist/toolkits/google-docs/icon.js +6 -0
  56. package/dist/toolkits/google-docs/manifest.d.ts +3 -0
  57. package/dist/toolkits/google-docs/manifest.js +40 -0
  58. package/dist/toolkits/google-docs/tools/append-text.d.ts +30 -0
  59. package/dist/toolkits/google-docs/tools/append-text.js +48 -0
  60. package/dist/toolkits/google-docs/tools/copy-document.d.ts +27 -0
  61. package/dist/toolkits/google-docs/tools/copy-document.js +43 -0
  62. package/dist/toolkits/google-docs/tools/create-document.d.ts +26 -0
  63. package/dist/toolkits/google-docs/tools/create-document.js +39 -0
  64. package/dist/toolkits/google-docs/tools/delete-content.d.ts +28 -0
  65. package/dist/toolkits/google-docs/tools/delete-content.js +45 -0
  66. package/dist/toolkits/google-docs/tools/delete-document.d.ts +23 -0
  67. package/dist/toolkits/google-docs/tools/delete-document.js +30 -0
  68. package/dist/toolkits/google-docs/tools/get-document-text.d.ts +26 -0
  69. package/dist/toolkits/google-docs/tools/get-document-text.js +35 -0
  70. package/dist/toolkits/google-docs/tools/get-document.d.ts +5 -0
  71. package/dist/toolkits/google-docs/tools/get-document.js +29 -0
  72. package/dist/toolkits/google-docs/tools/index.d.ts +299 -0
  73. package/dist/toolkits/google-docs/tools/index.js +85 -0
  74. package/dist/toolkits/google-docs/tools/insert-text.d.ts +28 -0
  75. package/dist/toolkits/google-docs/tools/insert-text.js +39 -0
  76. package/dist/toolkits/google-docs/tools/list-documents.d.ts +21 -0
  77. package/dist/toolkits/google-docs/tools/list-documents.js +39 -0
  78. package/dist/toolkits/google-docs/tools/replace-text.d.ts +32 -0
  79. package/dist/toolkits/google-docs/tools/replace-text.js +48 -0
  80. package/dist/toolkits/google-docs/tools/utils.d.ts +12 -0
  81. package/dist/toolkits/google-docs/tools/utils.js +48 -0
  82. package/dist/toolkits/google-drive/icon.d.ts +5 -0
  83. package/dist/toolkits/google-drive/icon.js +6 -0
  84. package/dist/toolkits/google-drive/manifest.d.ts +3 -0
  85. package/dist/toolkits/google-drive/manifest.js +37 -0
  86. package/dist/toolkits/google-drive/tools/copy-file.d.ts +7 -0
  87. package/dist/toolkits/google-drive/tools/copy-file.js +41 -0
  88. package/dist/toolkits/google-drive/tools/create-folder.d.ts +6 -0
  89. package/dist/toolkits/google-drive/tools/create-folder.js +42 -0
  90. package/dist/toolkits/google-drive/tools/delete-file.d.ts +23 -0
  91. package/dist/toolkits/google-drive/tools/delete-file.js +30 -0
  92. package/dist/toolkits/google-drive/tools/download-file.d.ts +30 -0
  93. package/dist/toolkits/google-drive/tools/download-file.js +61 -0
  94. package/dist/toolkits/google-drive/tools/get-file.d.ts +5 -0
  95. package/dist/toolkits/google-drive/tools/get-file.js +31 -0
  96. package/dist/toolkits/google-drive/tools/index.d.ts +188 -0
  97. package/dist/toolkits/google-drive/tools/index.js +85 -0
  98. package/dist/toolkits/google-drive/tools/list-files.d.ts +21 -0
  99. package/dist/toolkits/google-drive/tools/list-files.js +42 -0
  100. package/dist/toolkits/google-drive/tools/move-file.d.ts +7 -0
  101. package/dist/toolkits/google-drive/tools/move-file.js +51 -0
  102. package/dist/toolkits/google-drive/tools/search-files.d.ts +21 -0
  103. package/dist/toolkits/google-drive/tools/search-files.js +36 -0
  104. package/dist/toolkits/google-drive/tools/update-file.d.ts +7 -0
  105. package/dist/toolkits/google-drive/tools/update-file.js +44 -0
  106. package/dist/toolkits/google-drive/tools/upload-file.d.ts +8 -0
  107. package/dist/toolkits/google-drive/tools/upload-file.js +58 -0
  108. package/dist/toolkits/google-sheets/manifest.js +1 -6
  109. package/package.json +22 -2
@@ -0,0 +1,188 @@
1
+ import { listFiles } from './list-files.js';
2
+ import { getFile } from './get-file.js';
3
+ import { searchFiles } from './search-files.js';
4
+ import { createFolder } from './create-folder.js';
5
+ import { uploadFile } from './upload-file.js';
6
+ import { downloadFile } from './download-file.js';
7
+ import { updateFile } from './update-file.js';
8
+ import { copyFile } from './copy-file.js';
9
+ import { moveFile } from './move-file.js';
10
+ import { deleteFile } from './delete-file.js';
11
+ export { listFiles, getFile, searchFiles, createFolder, uploadFile, downloadFile, updateFile, copyFile, moveFile, deleteFile, };
12
+ export declare const googleDriveTools: ({
13
+ name: string;
14
+ description: string;
15
+ tool: import("ai").Tool<{
16
+ pageSize: number;
17
+ googleDriveToken: string;
18
+ folderId?: string | undefined;
19
+ }, {
20
+ error: string;
21
+ details: any;
22
+ files?: undefined;
23
+ message?: undefined;
24
+ } | {
25
+ files: any;
26
+ error?: undefined;
27
+ details?: undefined;
28
+ message?: undefined;
29
+ } | {
30
+ error: string;
31
+ message: string;
32
+ details?: undefined;
33
+ files?: undefined;
34
+ }>;
35
+ requiredAuth: "googleDriveToken";
36
+ scope: "read";
37
+ } | {
38
+ name: string;
39
+ description: string;
40
+ tool: import("ai").Tool<{
41
+ googleDriveToken: string;
42
+ fileId: string;
43
+ }, any>;
44
+ requiredAuth: "googleDriveToken";
45
+ scope: "read";
46
+ } | {
47
+ name: string;
48
+ description: string;
49
+ tool: import("ai").Tool<{
50
+ q: string;
51
+ pageSize: number;
52
+ googleDriveToken: string;
53
+ }, {
54
+ error: string;
55
+ details: any;
56
+ files?: undefined;
57
+ message?: undefined;
58
+ } | {
59
+ files: any;
60
+ error?: undefined;
61
+ details?: undefined;
62
+ message?: undefined;
63
+ } | {
64
+ error: string;
65
+ message: string;
66
+ details?: undefined;
67
+ files?: undefined;
68
+ }>;
69
+ requiredAuth: "googleDriveToken";
70
+ scope: "read";
71
+ } | {
72
+ name: string;
73
+ description: string;
74
+ tool: import("ai").Tool<{
75
+ name: string;
76
+ googleDriveToken: string;
77
+ parentId?: string | undefined;
78
+ }, any>;
79
+ requiredAuth: "googleDriveToken";
80
+ scope: "write";
81
+ } | {
82
+ name: string;
83
+ description: string;
84
+ tool: import("ai").Tool<{
85
+ content: string;
86
+ name: string;
87
+ googleDriveToken: string;
88
+ mimeType: string;
89
+ parentId?: string | undefined;
90
+ }, any>;
91
+ requiredAuth: "googleDriveToken";
92
+ scope: "write";
93
+ } | {
94
+ name: string;
95
+ description: string;
96
+ tool: import("ai").Tool<{
97
+ googleDriveToken: string;
98
+ fileId: string;
99
+ exportMimeType?: string | undefined;
100
+ }, {
101
+ error: string;
102
+ details: any;
103
+ id?: undefined;
104
+ name?: undefined;
105
+ mimeType?: undefined;
106
+ content?: undefined;
107
+ message?: undefined;
108
+ } | {
109
+ id: any;
110
+ name: any;
111
+ mimeType: string;
112
+ content: string;
113
+ error?: undefined;
114
+ details?: undefined;
115
+ message?: undefined;
116
+ } | {
117
+ error: string;
118
+ message: string;
119
+ details?: undefined;
120
+ id?: undefined;
121
+ name?: undefined;
122
+ mimeType?: undefined;
123
+ content?: undefined;
124
+ }>;
125
+ requiredAuth: "googleDriveToken";
126
+ scope: "read";
127
+ } | {
128
+ name: string;
129
+ description: string;
130
+ tool: import("ai").Tool<{
131
+ googleDriveToken: string;
132
+ fileId: string;
133
+ description?: string | undefined;
134
+ name?: string | undefined;
135
+ }, any>;
136
+ requiredAuth: "googleDriveToken";
137
+ scope: "write";
138
+ } | {
139
+ name: string;
140
+ description: string;
141
+ tool: import("ai").Tool<{
142
+ googleDriveToken: string;
143
+ fileId: string;
144
+ name?: string | undefined;
145
+ parentId?: string | undefined;
146
+ }, any>;
147
+ requiredAuth: "googleDriveToken";
148
+ scope: "write";
149
+ } | {
150
+ name: string;
151
+ description: string;
152
+ tool: import("ai").Tool<{
153
+ googleDriveToken: string;
154
+ fileId: string;
155
+ newParentId: string;
156
+ removeParentId?: string | undefined;
157
+ }, any>;
158
+ requiredAuth: "googleDriveToken";
159
+ scope: "write";
160
+ } | {
161
+ name: string;
162
+ description: string;
163
+ tool: import("ai").Tool<{
164
+ googleDriveToken: string;
165
+ fileId: string;
166
+ }, {
167
+ error: string;
168
+ details: any;
169
+ success?: undefined;
170
+ fileId?: undefined;
171
+ message?: undefined;
172
+ } | {
173
+ success: boolean;
174
+ fileId: string;
175
+ error?: undefined;
176
+ details?: undefined;
177
+ message?: undefined;
178
+ } | {
179
+ error: string;
180
+ message: string;
181
+ details?: undefined;
182
+ success?: undefined;
183
+ fileId?: undefined;
184
+ }>;
185
+ requiredAuth: "googleDriveToken";
186
+ scope: "delete";
187
+ })[];
188
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,85 @@
1
+ // @ts-nocheck
2
+ import { listFiles } from './list-files.js';
3
+ import { getFile } from './get-file.js';
4
+ import { searchFiles } from './search-files.js';
5
+ import { createFolder } from './create-folder.js';
6
+ import { uploadFile } from './upload-file.js';
7
+ import { downloadFile } from './download-file.js';
8
+ import { updateFile } from './update-file.js';
9
+ import { copyFile } from './copy-file.js';
10
+ import { moveFile } from './move-file.js';
11
+ import { deleteFile } from './delete-file.js';
12
+ export { listFiles, getFile, searchFiles, createFolder, uploadFile, downloadFile, updateFile, copyFile, moveFile, deleteFile, };
13
+ export const googleDriveTools = [
14
+ {
15
+ name: 'googleDriveListFiles',
16
+ description: 'List files and folders in Google Drive.',
17
+ tool: listFiles,
18
+ requiredAuth: 'googleDriveToken',
19
+ scope: 'read',
20
+ },
21
+ {
22
+ name: 'googleDriveGetFile',
23
+ description: 'Get metadata for a file or folder in Google Drive by ID.',
24
+ tool: getFile,
25
+ requiredAuth: 'googleDriveToken',
26
+ scope: 'read',
27
+ },
28
+ {
29
+ name: 'googleDriveSearchFiles',
30
+ description: 'Search for files and folders in Google Drive using a Drive query.',
31
+ tool: searchFiles,
32
+ requiredAuth: 'googleDriveToken',
33
+ scope: 'read',
34
+ },
35
+ {
36
+ name: 'googleDriveCreateFolder',
37
+ description: 'Create a new folder in Google Drive.',
38
+ tool: createFolder,
39
+ requiredAuth: 'googleDriveToken',
40
+ scope: 'write',
41
+ },
42
+ {
43
+ name: 'googleDriveUploadFile',
44
+ description: 'Upload a file to Google Drive using multipart upload.',
45
+ tool: uploadFile,
46
+ requiredAuth: 'googleDriveToken',
47
+ scope: 'write',
48
+ },
49
+ {
50
+ name: 'googleDriveDownloadFile',
51
+ description: 'Download file content from Google Drive.',
52
+ tool: downloadFile,
53
+ requiredAuth: 'googleDriveToken',
54
+ scope: 'read',
55
+ },
56
+ {
57
+ name: 'googleDriveUpdateFile',
58
+ description: 'Update file metadata in Google Drive (rename, description).',
59
+ tool: updateFile,
60
+ requiredAuth: 'googleDriveToken',
61
+ scope: 'write',
62
+ },
63
+ {
64
+ name: 'googleDriveCopyFile',
65
+ description: 'Copy a file in Google Drive.',
66
+ tool: copyFile,
67
+ requiredAuth: 'googleDriveToken',
68
+ scope: 'write',
69
+ },
70
+ {
71
+ name: 'googleDriveMoveFile',
72
+ description: 'Move a file or folder to a different parent folder in Google Drive.',
73
+ tool: moveFile,
74
+ requiredAuth: 'googleDriveToken',
75
+ scope: 'write',
76
+ },
77
+ {
78
+ name: 'googleDriveDeleteFile',
79
+ description: 'Delete a file or folder in Google Drive (moves to trash).',
80
+ tool: deleteFile,
81
+ requiredAuth: 'googleDriveToken',
82
+ scope: 'delete',
83
+ },
84
+ ];
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,21 @@
1
+ export declare const listFiles: import("ai").Tool<{
2
+ pageSize: number;
3
+ googleDriveToken: string;
4
+ folderId?: string | undefined;
5
+ }, {
6
+ error: string;
7
+ details: any;
8
+ files?: undefined;
9
+ message?: undefined;
10
+ } | {
11
+ files: any;
12
+ error?: undefined;
13
+ details?: undefined;
14
+ message?: undefined;
15
+ } | {
16
+ error: string;
17
+ message: string;
18
+ details?: undefined;
19
+ files?: undefined;
20
+ }>;
21
+ //# sourceMappingURL=list-files.d.ts.map
@@ -0,0 +1,42 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ export const listFiles = tool({
5
+ description: 'List files and folders in Google Drive.',
6
+ inputSchema: z.object({
7
+ googleDriveToken: z.string().describe('The Google Drive access token'),
8
+ folderId: z.string().optional().describe('Parent folder ID to list children of (defaults to root)'),
9
+ pageSize: z.number().optional().default(20).describe('Maximum number of files to return'),
10
+ }),
11
+ execute: async ({ googleDriveToken, folderId, pageSize = 20 }) => {
12
+ try {
13
+ const url = new URL('https://www.googleapis.com/drive/v3/files');
14
+ let query = 'trashed = false';
15
+ if (folderId) {
16
+ query += ` and '${folderId}' in parents`;
17
+ }
18
+ else {
19
+ query += " and 'root' in parents";
20
+ }
21
+ url.searchParams.set('q', query);
22
+ url.searchParams.set('pageSize', String(pageSize));
23
+ url.searchParams.set('fields', 'files(id,name,mimeType,modifiedTime,parents,webViewLink)');
24
+ const response = await fetch(url.toString(), {
25
+ headers: { Authorization: `Bearer ${googleDriveToken}` },
26
+ });
27
+ if (!response.ok) {
28
+ const error = await response.json();
29
+ return { error: 'Failed to list files', details: error };
30
+ }
31
+ const data = await response.json();
32
+ return { files: data.files ?? [] };
33
+ }
34
+ catch (error) {
35
+ return {
36
+ error: 'Error listing files',
37
+ message: error instanceof Error ? error.message : 'Unknown error',
38
+ };
39
+ }
40
+ },
41
+ });
42
+ //# sourceMappingURL=list-files.js.map
@@ -0,0 +1,7 @@
1
+ export declare const moveFile: import("ai").Tool<{
2
+ googleDriveToken: string;
3
+ fileId: string;
4
+ newParentId: string;
5
+ removeParentId?: string | undefined;
6
+ }, any>;
7
+ //# sourceMappingURL=move-file.d.ts.map
@@ -0,0 +1,51 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ export const moveFile = tool({
5
+ description: 'Move a file or folder to a different parent folder in Google Drive.',
6
+ inputSchema: z.object({
7
+ googleDriveToken: z.string().describe('The Google Drive access token'),
8
+ fileId: z.string().describe('The ID of the file or folder to move'),
9
+ newParentId: z.string().describe('The ID of the destination folder'),
10
+ removeParentId: z.string().optional().describe('Parent folder ID to remove (auto-detected if omitted)'),
11
+ }),
12
+ execute: async ({ googleDriveToken, fileId, newParentId, removeParentId }) => {
13
+ try {
14
+ let removeParents = removeParentId;
15
+ if (!removeParents) {
16
+ const metaUrl = `https://www.googleapis.com/drive/v3/files/${fileId}?fields=parents`;
17
+ const metaResponse = await fetch(metaUrl, {
18
+ headers: { Authorization: `Bearer ${googleDriveToken}` },
19
+ });
20
+ if (!metaResponse.ok) {
21
+ const error = await metaResponse.json();
22
+ return { error: 'Failed to get file parents', details: error };
23
+ }
24
+ const meta = await metaResponse.json();
25
+ removeParents = meta.parents?.[0];
26
+ }
27
+ const url = new URL(`https://www.googleapis.com/drive/v3/files/${fileId}`);
28
+ url.searchParams.set('addParents', newParentId);
29
+ if (removeParents) {
30
+ url.searchParams.set('removeParents', removeParents);
31
+ }
32
+ url.searchParams.set('fields', 'id,name,parents');
33
+ const response = await fetch(url.toString(), {
34
+ method: 'PATCH',
35
+ headers: { Authorization: `Bearer ${googleDriveToken}` },
36
+ });
37
+ if (!response.ok) {
38
+ const error = await response.json();
39
+ return { error: 'Failed to move file', details: error };
40
+ }
41
+ return await response.json();
42
+ }
43
+ catch (error) {
44
+ return {
45
+ error: 'Error moving file',
46
+ message: error instanceof Error ? error.message : 'Unknown error',
47
+ };
48
+ }
49
+ },
50
+ });
51
+ //# sourceMappingURL=move-file.js.map
@@ -0,0 +1,21 @@
1
+ export declare const searchFiles: import("ai").Tool<{
2
+ q: string;
3
+ pageSize: number;
4
+ googleDriveToken: string;
5
+ }, {
6
+ error: string;
7
+ details: any;
8
+ files?: undefined;
9
+ message?: undefined;
10
+ } | {
11
+ files: any;
12
+ error?: undefined;
13
+ details?: undefined;
14
+ message?: undefined;
15
+ } | {
16
+ error: string;
17
+ message: string;
18
+ details?: undefined;
19
+ files?: undefined;
20
+ }>;
21
+ //# sourceMappingURL=search-files.d.ts.map
@@ -0,0 +1,36 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ export const searchFiles = tool({
5
+ description: 'Search for files and folders in Google Drive using a Drive query.',
6
+ inputSchema: z.object({
7
+ googleDriveToken: z.string().describe('The Google Drive access token'),
8
+ q: z.string().describe('Drive search query (e.g. "name contains \'report\'" or "mimeType=\'application/pdf\'")'),
9
+ pageSize: z.number().optional().default(20).describe('Maximum number of results to return'),
10
+ }),
11
+ execute: async ({ googleDriveToken, q, pageSize = 20 }) => {
12
+ try {
13
+ const url = new URL('https://www.googleapis.com/drive/v3/files');
14
+ const query = `trashed = false and (${q})`;
15
+ url.searchParams.set('q', query);
16
+ url.searchParams.set('pageSize', String(pageSize));
17
+ url.searchParams.set('fields', 'files(id,name,mimeType,modifiedTime,parents,webViewLink)');
18
+ const response = await fetch(url.toString(), {
19
+ headers: { Authorization: `Bearer ${googleDriveToken}` },
20
+ });
21
+ if (!response.ok) {
22
+ const error = await response.json();
23
+ return { error: 'Failed to search files', details: error };
24
+ }
25
+ const data = await response.json();
26
+ return { files: data.files ?? [] };
27
+ }
28
+ catch (error) {
29
+ return {
30
+ error: 'Error searching files',
31
+ message: error instanceof Error ? error.message : 'Unknown error',
32
+ };
33
+ }
34
+ },
35
+ });
36
+ //# sourceMappingURL=search-files.js.map
@@ -0,0 +1,7 @@
1
+ export declare const updateFile: import("ai").Tool<{
2
+ googleDriveToken: string;
3
+ fileId: string;
4
+ description?: string | undefined;
5
+ name?: string | undefined;
6
+ }, any>;
7
+ //# sourceMappingURL=update-file.d.ts.map
@@ -0,0 +1,44 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ export const updateFile = tool({
5
+ description: 'Update file metadata in Google Drive (rename, description).',
6
+ inputSchema: z.object({
7
+ googleDriveToken: z.string().describe('The Google Drive access token'),
8
+ fileId: z.string().describe('The ID of the file to update'),
9
+ name: z.string().optional().describe('New file name'),
10
+ description: z.string().optional().describe('New file description'),
11
+ }),
12
+ execute: async ({ googleDriveToken, fileId, name, description }) => {
13
+ try {
14
+ const metadata = {};
15
+ if (name !== undefined)
16
+ metadata.name = name;
17
+ if (description !== undefined)
18
+ metadata.description = description;
19
+ if (Object.keys(metadata).length === 0) {
20
+ return { error: 'At least one of name or description must be provided' };
21
+ }
22
+ const response = await fetch(`https://www.googleapis.com/drive/v3/files/${fileId}`, {
23
+ method: 'PATCH',
24
+ headers: {
25
+ Authorization: `Bearer ${googleDriveToken}`,
26
+ 'Content-Type': 'application/json',
27
+ },
28
+ body: JSON.stringify(metadata),
29
+ });
30
+ if (!response.ok) {
31
+ const error = await response.json();
32
+ return { error: 'Failed to update file', details: error };
33
+ }
34
+ return await response.json();
35
+ }
36
+ catch (error) {
37
+ return {
38
+ error: 'Error updating file',
39
+ message: error instanceof Error ? error.message : 'Unknown error',
40
+ };
41
+ }
42
+ },
43
+ });
44
+ //# sourceMappingURL=update-file.js.map
@@ -0,0 +1,8 @@
1
+ export declare const uploadFile: import("ai").Tool<{
2
+ content: string;
3
+ name: string;
4
+ googleDriveToken: string;
5
+ mimeType: string;
6
+ parentId?: string | undefined;
7
+ }, any>;
8
+ //# sourceMappingURL=upload-file.d.ts.map
@@ -0,0 +1,58 @@
1
+ // @ts-nocheck
2
+ import { tool } from 'ai';
3
+ import { z } from 'zod';
4
+ export const uploadFile = tool({
5
+ description: 'Upload a file to Google Drive using multipart upload.',
6
+ inputSchema: z.object({
7
+ googleDriveToken: z.string().describe('The Google Drive access token'),
8
+ name: z.string().describe('File name'),
9
+ mimeType: z.string().describe('MIME type of the file (e.g. text/plain, application/pdf)'),
10
+ content: z.string().describe('Base64-encoded file content'),
11
+ parentId: z.string().optional().describe('Parent folder ID (defaults to root)'),
12
+ }),
13
+ execute: async ({ googleDriveToken, name, mimeType, content, parentId }) => {
14
+ try {
15
+ const metadata = { name };
16
+ if (parentId) {
17
+ metadata.parents = [parentId];
18
+ }
19
+ const boundary = '-------rnsk_drive_upload';
20
+ const metadataPart = JSON.stringify(metadata);
21
+ const contentBuffer = Buffer.from(content, 'base64');
22
+ const body = [
23
+ `--${boundary}`,
24
+ 'Content-Type: application/json; charset=UTF-8',
25
+ '',
26
+ metadataPart,
27
+ `--${boundary}`,
28
+ `Content-Type: ${mimeType}`,
29
+ '',
30
+ ].join('\r\n');
31
+ const bodyBuffer = Buffer.concat([
32
+ Buffer.from(body, 'utf-8'),
33
+ contentBuffer,
34
+ Buffer.from(`\r\n--${boundary}--`, 'utf-8'),
35
+ ]);
36
+ const response = await fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id,name,mimeType,webViewLink', {
37
+ method: 'POST',
38
+ headers: {
39
+ Authorization: `Bearer ${googleDriveToken}`,
40
+ 'Content-Type': `multipart/related; boundary=${boundary}`,
41
+ },
42
+ body: bodyBuffer,
43
+ });
44
+ if (!response.ok) {
45
+ const error = await response.json();
46
+ return { error: 'Failed to upload file', details: error };
47
+ }
48
+ return await response.json();
49
+ }
50
+ catch (error) {
51
+ return {
52
+ error: 'Error uploading file',
53
+ message: error instanceof Error ? error.message : 'Unknown error',
54
+ };
55
+ }
56
+ },
57
+ });
58
+ //# sourceMappingURL=upload-file.js.map
@@ -13,12 +13,7 @@ export default defineToolkit({
13
13
  tokenField: 'googleSheetsToken',
14
14
  provider: {
15
15
  slug: 'google-sheets',
16
- env: {
17
- clientId: 'GOOGLE_CLIENT_ID',
18
- clientSecret: 'GOOGLE_CLIENT_SECRET',
19
- clientIdFallback: 'GMAIL_CLIENT_ID',
20
- clientSecretFallback: 'GMAIL_CLIENT_SECRET',
21
- },
16
+ env: { clientId: 'GOOGLE_SHEET_CLIENT_ID', clientSecret: 'GOOGLE_SHEET_CLIENT_SECRET' },
22
17
  authorizeUrl: 'https://accounts.google.com/o/oauth2/v2/auth',
23
18
  tokenUrl: 'https://oauth2.googleapis.com/token',
24
19
  scopes: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rnsk/toolkits",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Runstack toolkit registry — manifest-driven tool definitions for AI agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -32,6 +32,11 @@
32
32
  "zod": "^3.23.0 || ^4.0.0"
33
33
  },
34
34
  "dependencies": {
35
+ "@aws-sdk/client-cloudwatch": "^3.1134.0",
36
+ "@aws-sdk/client-cloudwatch-logs": "^3.1134.0",
37
+ "@aws-sdk/client-ec2": "^3.1134.0",
38
+ "@google-cloud/compute": "^7.4.0",
39
+ "@google-cloud/monitoring": "^6.1.0",
35
40
  "firecrawl": "^4.38.0",
36
41
  "octokit": "^5.0.5",
37
42
  "zod-to-json-schema": "^3.25.2"
@@ -42,5 +47,20 @@
42
47
  "tsx": "^4.19.3",
43
48
  "typescript": "^5",
44
49
  "zod": "^3.24.2"
45
- }
50
+ },
51
+ "author": "Deepraj Bera",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "https://github.com/deepraj21/rnsk-toolkits"
55
+ },
56
+ "homepage": "https://runstack.engineer",
57
+ "keywords": [
58
+ "runstack",
59
+ "ai-sdk",
60
+ "vercel-ai-sdk",
61
+ "mcp",
62
+ "tools",
63
+ "agents",
64
+ "llm"
65
+ ]
46
66
  }