You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds LLM Tools for GitHub Copilot agent mode. Closes#441 (#448)
## 🎯 Aim
The aim is to add first prototype of LLM Tools to SPFx Toolkit as part
of a new pre-release, demo it and explore how we may use it. After this
PR we should clarify list of issues with tools that should be developed,
the once in this PR are just a small part and a proposal. We are limited
to 70-80 tools for now so we should really trim what we may do and focus
only on SharePoint for now.
The aim is to allow to really manage SharePoint from GitHub copilot
agent mode within VS Code, so allow to create sites, lists, items etc.
remove or edit them and all of that.
## 📷 Result


sneek peak 🎬
https://1drv.ms/v/c/e82bbd5e6a08f219/EXYLrH3aOUlDkKBQbrYibpwBIWsVp_qCRLZULAginYZxFw?e=gJ2R1v
## ✅ What was done
- [X] Adds new LLM tools part
- [X] Added some basic tools allow to: list apps, install app, add list,
get list, remove list, add page, add site, remove site, get site
## 🔗 Related issue
Closes: #441
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: package.json
+274-1Lines changed: 274 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -78,6 +78,279 @@
78
78
]
79
79
}
80
80
],
81
+
"languageModelTools": [
82
+
{
83
+
"name": "spo_app_list",
84
+
"tags": [
85
+
"sharepoint",
86
+
"app",
87
+
"spfx-toolkit"
88
+
],
89
+
"toolReferenceName": "SharePointAppList",
90
+
"displayName": "List SharePoint apps",
91
+
"modelDescription": "Lists apps from the tenant app catalog. This tool may be used to list all apps from the tenant app catalog.",
92
+
"userDescription": "Lists apps from the tenant app catalog",
93
+
"canBeReferencedInPrompt": true,
94
+
"icon": "$(search)",
95
+
"inputSchema": {}
96
+
},
97
+
{
98
+
"name": "spo_app_install",
99
+
"tags": [
100
+
"sharepoint",
101
+
"app",
102
+
"spfx-toolkit"
103
+
],
104
+
"toolReferenceName": "SharePointAppInstall",
105
+
"displayName": "Install a SharePoint app in a site",
106
+
"modelDescription": "Installs an app from tenant app catalog in the site. This tool may be used to install a specified app by its GUID to a specified site.",
107
+
"userDescription": "Installs an app from tenant app catalog in the site",
108
+
"canBeReferencedInPrompt": true,
109
+
"icon": "$(package)",
110
+
"inputSchema": {
111
+
"type": "object",
112
+
"properties": {
113
+
"siteUrl": {
114
+
"type": "string",
115
+
"description": "URL of the site. This option is required.",
116
+
"default": ""
117
+
},
118
+
"id": {
119
+
"type": "string",
120
+
"description": "GUID of the app to install. This option is required.",
121
+
"default": ""
122
+
}
123
+
}
124
+
}
125
+
},
126
+
{
127
+
"name": "spo_list_add",
128
+
"tags": [
129
+
"sharepoint",
130
+
"list",
131
+
"spfx-toolkit"
132
+
],
133
+
"toolReferenceName": "SharePointListAdd",
134
+
"displayName": "Create a SharePoint list",
135
+
"modelDescription": "Creates list in the specified site. This tool may be used to create a SharePoint list in a site.",
136
+
"userDescription": "Creates list in the specified site.",
137
+
"canBeReferencedInPrompt": true,
138
+
"icon": "$(add)",
139
+
"inputSchema": {
140
+
"type": "object",
141
+
"properties": {
142
+
"title": {
143
+
"type": "string",
144
+
"description": "Title of the list to add. This option is required.",
145
+
"default": ""
146
+
},
147
+
"webUrl": {
148
+
"type": "string",
149
+
"description": "URL of the site where the list should be added. This option is required.",
150
+
"default": ""
151
+
},
152
+
"baseTemplate": {
153
+
"type": "string",
154
+
"description": "The list definition type on which the list is based. Allowed values Announcements, Contacts, CustomGrid, DataSources,DiscussionBoard, DocumentLibrary, Events, GanttTasks, GenericList, IssuesTracking, Links, NoCodeWorkflows,PictureLibrary, Survey, Tasks, WebPageLibrary, WorkflowHistory, WorkflowProcess, XmlForm. Default value is GenericList. This option is optional.",
155
+
"default": ""
156
+
},
157
+
"description": {
158
+
"type": "string",
159
+
"description": "The description for the list. This option is optional.",
160
+
"default": ""
161
+
}
162
+
}
163
+
}
164
+
},
165
+
{
166
+
"name": "spo_list_get",
167
+
"tags": [
168
+
"sharepoint",
169
+
"list",
170
+
"spfx-toolkit"
171
+
],
172
+
"toolReferenceName": "SharePointListGet",
173
+
"displayName": "Get a SharePoint list",
174
+
"modelDescription": "Gets information about the specific list. This tool may be used to check if a list on a SharePoint site exists or to retrieve more information about it.",
175
+
"userDescription": "Gets information about the specific list.",
176
+
"canBeReferencedInPrompt": true,
177
+
"icon": "$(search)",
178
+
"inputSchema": {
179
+
"type": "object",
180
+
"properties": {
181
+
"title": {
182
+
"type": "string",
183
+
"description": "Title of the list to retrieve information for. This option is required.",
184
+
"default": ""
185
+
},
186
+
"webUrl": {
187
+
"type": "string",
188
+
"description": "URL of the site where the list to retrieve is located. This option is required.",
189
+
"default": ""
190
+
}
191
+
}
192
+
}
193
+
},
194
+
{
195
+
"name": "spo_list_remove",
196
+
"tags": [
197
+
"sharepoint",
198
+
"list",
199
+
"spfx-toolkit"
200
+
],
201
+
"toolReferenceName": "SharePointListRemove",
202
+
"displayName": "Remove a SharePoint list",
203
+
"modelDescription": "Removes the specified list. This tool may be used to remove a SharePoint list from a site.",
204
+
"userDescription": "Removes the specified list.",
205
+
"canBeReferencedInPrompt": true,
206
+
"icon": "$(trash)",
207
+
"inputSchema": {
208
+
"type": "object",
209
+
"properties": {
210
+
"title": {
211
+
"type": "string",
212
+
"description": "Title of the list to remove. This option is required.",
213
+
"default": ""
214
+
},
215
+
"webUrl": {
216
+
"type": "string",
217
+
"description": "URL of the site where the list to remove is located. This option is required.",
218
+
"default": ""
219
+
}
220
+
}
221
+
}
222
+
},
223
+
{
224
+
"name": "spo_page_add",
225
+
"tags": [
226
+
"sharepoint",
227
+
"page",
228
+
"spfx-toolkit"
229
+
],
230
+
"toolReferenceName": "SharePointPageAdd",
231
+
"displayName": "Add a SharePoint Page",
232
+
"modelDescription": "Creates a page. This tool may be used to add a page on a SharePoint site.",
233
+
"userDescription": "Creates a page.",
234
+
"canBeReferencedInPrompt": true,
235
+
"icon": "$(add)",
236
+
"inputSchema": {
237
+
"type": "object",
238
+
"properties": {
239
+
"name": {
240
+
"type": "string",
241
+
"description": "Name of the page to create. This option is required.",
242
+
"default": ""
243
+
},
244
+
"webUrl": {
245
+
"type": "string",
246
+
"description": "URL of the site where the page should be created. This option is required.",
247
+
"default": ""
248
+
},
249
+
"title": {
250
+
"type": "string",
251
+
"description": "Title of the page to create. If not specified, will use the page name as its title. This option is optional.",
252
+
"default": ""
253
+
},
254
+
"layoutType": {
255
+
"type": "string",
256
+
"description": "Layout of the page. Allowed values Article, Home, SingleWebPartAppPage, RepostPage, HeaderlessSearchResults, Spaces, Topic. Default Article. This option is optional.",
257
+
"default": ""
258
+
}
259
+
}
260
+
}
261
+
},{
262
+
"name": "spo_site_add",
263
+
"tags": [
264
+
"sharepoint",
265
+
"site",
266
+
"spfx-toolkit"
267
+
],
268
+
"toolReferenceName": "SharePointSiteAdd",
269
+
"displayName": "Add SharePoint Site",
270
+
"modelDescription": "Create a new SharePoint Online site. This tool may be used to create a CommunicationSite or a TeamSite. in case of TeamSite we need to provide the owners of the site and in case of CommunicationSite we need to specify the url.",
271
+
"userDescription": "Create a new SharePoint Online site.",
272
+
"canBeReferencedInPrompt": true,
273
+
"icon": "$(add)",
274
+
"inputSchema": {
275
+
"type": "object",
276
+
"properties": {
277
+
"type": {
278
+
"type": "string",
279
+
"description": "Type of sites to add. Allowed values TeamSite, CommunicationSite. This property is required.",
280
+
"default": "CommunicationSite"
281
+
},
282
+
"title": {
283
+
"type": "string",
284
+
"description": "Site title. This property is required.",
285
+
"default": ""
286
+
},
287
+
"url": {
288
+
"type": "string",
289
+
"description": "Site URL. In case of CommunicationSite this option is required.",
290
+
"default": ""
291
+
},
292
+
"description": {
293
+
"type": "string",
294
+
"description": "Site description. This property is optional.",
295
+
"default": ""
296
+
},
297
+
"owners": {
298
+
"type": "string",
299
+
"description": "Comma-separated list of user emails to set as site owners. In case of TeamSite this option is required.",
300
+
"default": ""
301
+
}
302
+
}
303
+
}
304
+
},
305
+
{
306
+
"name": "spo_site_remove",
307
+
"tags": [
308
+
"sharepoint",
309
+
"site",
310
+
"spfx-toolkit"
311
+
],
312
+
"toolReferenceName": "SharePointSiteRemove",
313
+
"displayName": "Remove SharePoint Site",
314
+
"modelDescription": "Remove a SharePoint Online site. This tool may be used to remove a site.",
315
+
"userDescription": "Remove a SharePoint Online site.",
316
+
"canBeReferencedInPrompt": true,
317
+
"icon": "$(trash)",
318
+
"inputSchema": {
319
+
"type": "object",
320
+
"properties": {
321
+
"url": {
322
+
"type": "string",
323
+
"description": "URL of the site. This option is required.",
324
+
"default": ""
325
+
}
326
+
}
327
+
}
328
+
},
329
+
{
330
+
"name": "spo_site_get",
331
+
"tags": [
332
+
"sharepoint",
333
+
"site",
334
+
"spfx-toolkit"
335
+
],
336
+
"toolReferenceName": "SharePointSiteGet",
337
+
"displayName": "Get SharePoint Site",
338
+
"modelDescription": "Get a SharePoint Online site. This tool may be used to check if a site extist or to retrieve more information about a SharePoints site.",
339
+
"userDescription": "Get a SharePoint Online site.",
340
+
"canBeReferencedInPrompt": true,
341
+
"icon": "$(search)",
342
+
"inputSchema": {
343
+
"type": "object",
344
+
"properties": {
345
+
"url": {
346
+
"type": "string",
347
+
"description": "URL of the site. This option is required.",
0 commit comments