The idea is that humans, agents, and developers need access to some sort of reusable "function", or "tool". Some tools are low-level and built-in, like PublishBlobs . Other tools will build upon existing tools. For example MoveDocument tool is going to utilize PublishBlobs under the hood.
Eventually, many tools will be provided by extension. Every extension will define what tools (or other info) it requires to run. If the user approves, the extension will be able to call those tools. And, a plug-in may provide tools to the user, agents, and to other extensions.
A tool has the following attributes:
Meant for quick operations, not long lived operations.
A tool should fail or succeed - "partial success" should be avoided
Optional Context - a tool may be ran in the context of a site, document, or specific URL.
Maybe identity/permissions are also considered part of context?
Input and Output schemas defined - the schemas will be used to precisely describe the input and output of a given tool
Tool requires a description for how and when to use the tool
Optional custom UI for users who access the tool
With these features, even something as essential as "Move Document" could be implemented as a plug-in. Even though this feature is going to be built-in always, it demonstrates the power of the plugin system design
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime