Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate Public Beta changes #255

Merged
merged 41 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
00fea46
Update README.md
jsdbroughton Nov 30, 2024
5d3c9ee
change to main server
jsdbroughton Nov 30, 2024
2afa4e4
Update important-caveats.md
jsdbroughton Nov 30, 2024
a5f3e90
Update getting-started.md
jsdbroughton Nov 30, 2024
187781b
Update for-automate-composers.md
jsdbroughton Nov 30, 2024
9fa4292
Update viewing-results.md
jsdbroughton Nov 30, 2024
0f82fb0
Update viewing-results.md
jsdbroughton Nov 30, 2024
35c8dc3
Update for-automate-composers.md
jsdbroughton Nov 30, 2024
0461964
Create for-automate-users.md
jsdbroughton Nov 30, 2024
e9cdd8f
Update config.js
jsdbroughton Nov 30, 2024
627b088
Delete automate/for-automate-composers.md
jsdbroughton Nov 30, 2024
f17f603
Update for-function-authors.md
jsdbroughton Nov 30, 2024
9b699b5
Update create-automation.md
jsdbroughton Nov 30, 2024
cbb8e2c
Update update-automation.md
jsdbroughton Nov 30, 2024
889a6f2
Update config.js
jsdbroughton Nov 30, 2024
157d390
Create public-functions
jsdbroughton Nov 30, 2024
216a837
Create public-functions.md
jsdbroughton Nov 30, 2024
70b14d7
Delete automate/public-functions
jsdbroughton Nov 30, 2024
c984c38
Update public-functions.md
jsdbroughton Nov 30, 2024
5853221
Update public-functions.md
jsdbroughton Nov 30, 2024
d12a706
Update public-functions.md
jsdbroughton Nov 30, 2024
ec1aff0
Update public-functions.md
jsdbroughton Nov 30, 2024
8af2733
Update for-function-authors.md
jsdbroughton Nov 30, 2024
0ce04d1
Update create-function.md
jsdbroughton Nov 30, 2024
7d0d0c5
Update function-testing.md
jsdbroughton Nov 30, 2024
3fe5172
Update documenting.md
jsdbroughton Nov 30, 2024
195e5b7
Update release-function-version.md
jsdbroughton Nov 30, 2024
6181032
Update release-function-version.md
jsdbroughton Nov 30, 2024
432df7a
Update demos.md
jsdbroughton Nov 30, 2024
3da68be
Update demos.md
jsdbroughton Nov 30, 2024
014b4d9
Update feedback.md
jsdbroughton Nov 30, 2024
d84e2f2
Update roadmap.md
jsdbroughton Nov 30, 2024
f38e47c
Update roadmap.md
jsdbroughton Nov 30, 2024
28d910c
Update troubleshooting.md
jsdbroughton Nov 30, 2024
71c97ec
Update known-issues.md
jsdbroughton Nov 30, 2024
fe4e704
Update frequently-asked-questions.md
jsdbroughton Nov 30, 2024
c0f2681
Update config.js
jsdbroughton Nov 30, 2024
5336d1a
Update public-functions.md
jsdbroughton Nov 30, 2024
54f88b8
Update viewing-results.md
jsdbroughton Nov 30, 2024
ebf95e5
Update release-function-version.md
jsdbroughton Nov 30, 2024
8030988
Update troubleshooting.md
jsdbroughton Nov 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,22 +261,22 @@ module.exports = {
title: 'Core Functionalities',
collapsable: true,
children: [
'for-automate-composers',
'viewing-results',
'for-automate-users',
'for-function-authors',
],
},
],
},
{
title: 'Working with Automations',
title: 'Automations',
collapsable: false,
children: ['create-automation', 'update-automation'],
children: ['create-automation', 'update-automation', 'viewing-results'],
},
{
title: 'Developing Functions',
title: 'Functions',
collapsable: false,
children: [
'public-functions',
'create-function',
'making-your-function',
'function-testing',
Expand Down
15 changes: 10 additions & 5 deletions automate/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
# Speckle Automate Beta
::: tip 🚧 NOTE
Speckle Automate is in an accessible beta phase and restricted to the Speckle development server. These docs are a work in progress and are updated regularly.
# Speckle Automate Public Beta

::: tip 🚧 NOTE
Speckle Automate has entered the public beta phase and is now available on the Speckle production server: [app.speckle.systems](https://app.speckle.systems). These docs are a work in progress and are updated regularly to reflect the latest features and improvements.
:::

This documentation is designed to assist Speckle Automate users in creating and managing automation. As a Speckle user, you can now act as an **Automator**, leveraging public functions and creating custom workflows to streamline tasks and enhance productivity.

This mini documentation is designed to assist beta testers of Speckle Automate, focusing on the **Function Author** and **Automation Composer** personas. Your feedback is essential in refining these roles within the platform, enhancing functionality, and ensuring a user-friendly experience.
### Key Highlights:
- **Public Functions**: Available to all users on [app.speckle.systems](https://app.speckle.systems).
- **Private Functions**: Creatable and manageable within Workspaces.
- **Unified Hosting**: All data, functions, and automations are hosted on the main Speckle server.
- **Collaboration**: Workspace members can use public and private functions to create automations collaboratively.

We will continuously improve these documentation details as things develop; there may be occasions when development outpaces the documentation. If you have any questions, please reach out to us on the [Speckle Community Forum: Automate](https://speckle.community/c/making-speckle/insiders-automate/27).
We are continuously improving the documentation. As Speckle Automate evolves, there may be occasions when development temporarily outpaces the documentation. If you have any questions, please contact us on the [Speckle Community Forum: Automate](https://speckle.community/c/making-speckle/insiders-automate/27).
82 changes: 35 additions & 47 deletions automate/create-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,42 @@

## **What is an Automation?**

- Automations allow you to achieve a wide variety of tasks.
- Automations are what apply a function to a Speckle model.
- Automations are used to configure a function to suit your particular requirements.
- Automations allow you to perform a wide variety of tasks efficiently.
- Automations apply a function to a Speckle model.
- Automations enable you to configure a function to meet your specific requirements.

For example, a function may render a photograph-quality image of any given model. An automation allows you to specify the camera position, lighting, and other settings to achieve the desired result, and then command the function to render an image of your particular Speckle model.
For example, a function might render a photograph-quality image of a model. Automation allows you to specify parameters such as the camera position, lighting, and other settings to customise the output for your particular Speckle model.

## **Creating an Automation**

Automations are created from two contexts:

1. 1. In the context of a project, found under the Automations tab.

![the automations tab](./img/automations-tab.png)

2. From the functions library

![alt text](./img/function-library-card.png)


The resulting modal dialog will present you with four or five prompt screens:

1. If you started from an automations list, **select a function to use** and click Next.

![create automation](./img/create-automation.png)

![selected function](./img/selected-function.png)

2. If you start from the Functions library or a Function page, you will go directly to step 3.
3. If the function has defined inputs to configure it, **set parameters** now.

![parameter configuration](./img/configuration.png)

4. **Add Automation Details**
1. If you started the automation from the project page, this is already selected for you; otherwise, you will need to choose which Speckle project and model will trigger your automation.

![set parameters](./img/set-parameters.png)

2. **Choose a Speckle Model from the current project**

![choose a model](./img/choose-model.png)

3. **Name your automation**. This is for your reference; ideally, make it meaningful, but it doesn’t need to be unique.

![alt text](./img/automation-name.png)


5. Create your Automation

![create!](./img/create-button.png)

6. **Success**! 🥳 You can now view your automation.
Automations are created from the **Automations** tab within a project.

![the automations tab](./img/automations-tab.png)

::: tip 💡 **Function Availability**
The library view includes both public functions and any private functions created for the Workspace if the project is a Workspace project created for your team. This ensures all team-specific and public resources are accessible during automation setup.
:::

### Steps to Create an Automation

1. **Select a Function**
- Choose a function from the list in the Automations tab and click **Next**.
![create automation](./img/create-automation.png)
![selected function](./img/selected-function.png)

2. **Set Parameters**
- If the function has defined inputs, configure them now.
![parameter configuration](./img/configuration.png)

3. **Add Automation Details**
- **Choose a Speckle Model**: Select a model from the current project that will trigger your automation.
![choose a model](./img/choose-model.png)
- **Name Your Automation**: Provide a meaningful name for reference (uniqueness is not required).
![alt text](./img/automation-name.png)

4. **Create Your Automation**
- Click **Create** to finalise the setup.
![create!](./img/create-button.png)

5. **Success!** 🥳
- Your automation is now ready to view and manage.
121 changes: 64 additions & 57 deletions automate/create-function.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,69 @@
# Creating Functions

If you have your verified account on latest.speckle.systems, navigate to [latest.speckle.systems/functions](https://latest.speckle.systems/functions).

You will now see above the Functions Library. In the top right, there is a new function button:
If you have a verified account on [app.speckle.systems](https://app.speckle.systems), navigate to [app.speckle.systems/functions](https://app.speckle.systems/functions).

You will see the Functions Library. In the top right, there is a **New Function** button:
![new function button](./img/new-function-button.png)

This will launch the function creation wizard

1. **Authorise GitHub:** Required only the first time.

![authorise github](./img/authorise-github.png)

::: tip 💡 Authorized OAuth Apps
You will find Speckle Automate in your Github account Authorized OAuth Apps. Access can be revoked at any time, but will be necessary to publish new functions.

![alt text](./img/authorised-applications.png)

:::

2. **Choose a template**: We are launching with Python and C# templates. These reflect our best-supported Speckle SDKs, **speckle-sharp** and **specklepy**. Each of our main SDKs includes the Automate SDK for that language.
3. **Define your function.** (Some of these details can be edited later)
1. **Choose an avatar/logo/icon** [optional]: This will be displayed in the functions list
2. **Choose a Name** [required]: This doesn’t need to be unique, but all functions will be a single list during the beta stages. The search filter will use the function name alone; it could be helpful if it identifies you as an author/company and the name/function intent. *e.g. SolarFarmLayout by Solarcorp*
3. **Add a description** [required]: This will be the short description used in the function list. The description supports basic Markdown if you wish to add markup.
4. **Identify source application data supported** [optional]: This may be helpful when defining Automations
5. **Add Tags** [optional]: A list of terms to categorise your function further. Multi-word tags should use _ or - characters. *e.g. Solar_Panels*
6. **~~Select a Github Organization** [optional]: This is only relevant if you want to publish as an organization and are a member of one.~~
7. **Click Next**: All being well, the wizard will create your function project on GitHub.

::: tip 🧙‍♂️ Wizard Actions
You will see that the wizard handles a lot of scaffolding for you. You can navigate to GitHub and see that the template project has been cloned under your repositories:

![alt text](./img/repo-title.png)

A GitHub action has been created for you; the specification for it is defined in `.github/workflows/**main.yml**`

![alt text](./img/build-and-deploy.png)

It also has injected two environmental variables as repository secrets for the interaction with the Automate API `SPECKLE_FUNCTION_ID` and `SPECKLE_FUNCTION_TOKEN`:

![alt text](./img/repo-secrets.png)


:::

::: tip 💡 Note
Choose whatever Project restrictions you wish, but it must be Public for now.
:::

</aside>

4. Your function has been created! 🥳 At this point, the template can be edited and amended to suit your own business logic.

![alt text](./img/function-created.png)

5. You can follow the links provided to:
1. **Open the repo:** this is a link to the project on GitHub
2. **Open in codespace:** You can get coding immediately in a virtual machine operating in a container at GitHub. Remember that any changes you make must be pushed to your project.
3. **Go to function**: This will navigate you to your functions page within Speckle Automate.
6. Your function will only appear in the [functions list](https://automate.speckle.dev/functions) once a first Release has been made.
This launches the function creation wizard.

---

## Steps to Create a Function

1. **Authorise GitHub**
Required only the first time.
![authorise github](./img/authorise-github.png)

::: tip 💡 **Authorized OAuth Apps**
Speckle Automate will appear under your GitHub account's Authorized OAuth Apps. Access can be revoked at any time but will be necessary to publish new functions.
![authorised applications](./img/authorised-applications.png)
:::

2. **Choose a Template**
We currently offer Python and C# templates, reflecting our best-supported SDKs (**specklepy** and **speckle-sharp**). Each includes the Automate SDK for its respective language.

3. **Define Your Function**
Some details can be edited later:
- **Avatar/Logo/Icon** [optional]: Displayed in the functions list.
- **Name** [required]: Does not need to be unique. Use a descriptive name to help identify the function and its purpose, e.g., `SolarFarmLayout by SolarCorp`.
- **Description** [required]: A short Markdown-supported description used in the functions list.
- **Source Application Data Supported** [optional]: Indicate which source applications your function is designed for.
- **Tags** [optional]: You can further categorise your function with single or multi-word tags, e.g., `Solar_Panels`.
- **Click Next**: The wizard will create your function project on GitHub.

::: tip 🧙‍♂️ **Wizard Actions**
The wizard handles scaffolding for you:
- Clones the template project into your repositories.
![repo-title](./img/repo-title.png)
- Creates a GitHub action (`.github/workflows/main.yml`) for build and deployment.
![build-and-deploy](./img/build-and-deploy.png)
- Injects API interaction environment variables (`SPECKLE_FUNCTION_ID` and `SPECKLE_FUNCTION_TOKEN`).
![repo-secrets](./img/repo-secrets.png)
:::

4. **Repository Management**
The function wizard creates a GitHub repository under your account.
- **Public vs Private**: Whether to keep this repository public or private depends on your team's open-source or source-available development approach. Speckle Automate supports both public and private repositories.
- **Personal or Organisational Accounts**: Depending on your setup and collaboration needs, you can publish functions from either your personal GitHub account or an organisation's account.

::: tip 💡 **Important**
Carefully manage repository access based on your team's workflows and requirements.
:::

5. **Finalise Your Function**
Once created, the function template can be edited and tailored to your business logic.
![function-created](./img/function-created.png)

6. **Next Steps**
From the success page, you can:
- **Open the Repository**: View the project on GitHub.
- **Open in Codespace**: Start coding immediately in a virtual environment. Remember to push changes back to GitHub.
- **Go to Function**: Navigate to your function’s page within Speckle Automate.

7. **Make a Release**
After making the first release on GitHub, your function will only appear in the Functions Library.

---

With these steps, your function is ready for further development, automation, and collaboration!
23 changes: 18 additions & 5 deletions automate/demos.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,27 @@
### SpeckleCon 2023 Announcement
[Introducing Speckle Automate 🤖 - SpeckleCon 2023](https://youtu.be/6_rXXGpnfb4)

### Our mission for Automate blog post
### Our Mission for Automate Blog Post
[Automate with Speckle](https://speckle.systems/blog/automate-with-speckle/)

### Function Demonstrations from SpeckleCon 2023

[Speckle Automate DEMOS 🔥 - SpeckleCon 2023](https://youtu.be/BuyUvIVUO2g)

### Demo functions for use in Automate
All our demo functions are listed as featured functions in the functions library. Most have been updated with the changes to the SDKs behind the scenes since SpeckleCo but we're working on this and also adding new functions all the time.
## Public Functions: Fully Functional Demonstrations

Public functions in the Speckle Automate Functions Library are designed to serve as both fully functional solutions and practical demonstrations of how Speckle Automate can be used effectively. They are:

- Ready-to-use in real-world workflows.
- Examples of how to structure functions using Speckle SDKs.
- Starting points for creating custom functions tailored to specific needs.

These functions reflect Speckle Automate's flexibility and power, offering users immediate value and insights into best practices.

## Demo Functions for Use in Automate

Speckle-authored demo functions are continually updated to reflect changes to the SDKs and expand functionality. While not all demo functions are available in the Functions Library, all Speckle-authored functions are published to GitHub alongside our open-source repositories.

These functions are typically namespaced under `speckle-automate-*` to facilitate discovery and reuse.

[All Functions - Speckle Automate](https://latest.speckle.systems/functions)
Explore the latest Automate functions here:
[All Functions - Speckle Automate](https://app.speckle.systems/functions)
30 changes: 23 additions & 7 deletions automate/documenting.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
# Documenting your function
Your function’s `README.md` will be published to its dedicated Automate page. This is your opportunity to communicate the key functionality, limitations, and detailed instructions for the function’s inputs to automation composers.
# Documenting Your Function

Later, this will be your opportunity to market why your function is the go-to solution for quality control, solar farm layouts, or Pokemon detection for Speckle. It is also a great way to seek collaborators.
Your function’s `README.md` will be published to its dedicated Automate page. This is your opportunity to communicate the key functionality, limitations, and detailed instructions for the function’s inputs to your team and organisation.

You can choose how detailed you would want to document the functional logic, so long as it is abundantly clear what it results in given what source data.
Speckle Automate’s function listing will display with full Markdown support, including relevant imagery, etc.
Clear documentation is critical for:

![Example of the Readme as displayed in a function listing.](./img/readme.png)
Example of the Readme as displayed in a function listing.
- Helping your team and collaborators understand how to use the function effectively.
- Ensuring consistency and transparency when sharing functions within a Workspace.
- Providing detailed instructions that reduce confusion and the need for additional support.

## Key Points for Documentation

- **Clarity and Precision**: Ensure it is abundantly clear what your function produces given specific source data and input parameters.
- **Detail as Needed**: Provide enough detail about the function’s purpose, logic, and limitations to enable your team to use it effectively.
- **Markdown Support**: Speckle Automate’s function listing supports full Markdown, allowing you to include relevant imagery, links, and formatting for a professional and functional presentation.

### Example

Below is an example of how a well-documented `README.md` might appear on a function listing:

![Example of the Readme as displayed in a function listing.](./img/readme.png)
*Example of the README as displayed in a function listing.*

---

Clear and thorough documentation ensures your function is easy to understand, use, and maintain—ultimately benefiting your team and organisation. Take the time to make it count!
Loading