Notifications
Clear all
This is a fantastic concept.
The natural next step for callin.io is an AI assistant extension. This extension could provide valuable assistance by:
- Viewing all existing workflows.
- Helping users locate specific workflows based on their functionality.
- Aiding in debugging by providing access to node outputs for specific scenarios.
- Assisting in the creation or suggesting new workflows.
Crucially, for security purposes, this AI assistant should not have access to user credentials.
Posted : 19/04/2025 8:56 am
Hello! I'm a bit late to the party, but here's my brain dump:
- Being able to add custom UI to various points, similar to the current Insights example in the repository, is definitely very cool. For instance, this could include new sections in the sidebar (e.g., near the Templates, Variables, and Help buttons, towards the bottom left), or in the top bar, or on the cards for each workflow in the table, or elsewhere. I'm thinking along the lines of Mattermost's component extensions ("Register your own React components to be added to the channel header, sidebars, user details popover, main menu and other supported components", Web app plugins), or the Modules available for Jira apps (e.g., Jira apps can hook into the admin page, create custom fields, add issue actions, add records to the Activity tab of an issue, add JQL functions for searching, and more. See https://developer.atlassian.com/platform/forge/manifest-reference/modules/index-jira/ )
- An extension to custom components: full pages.
- Presumably related to the above: adding custom routes, allowing Vue components to call backend code. Ideally, this backend code should have access to the entire application context, such as the Services powering most/all of callin.io's backend. This way, extensions could access the DB or retrieve user information.
- Giving extensions the ability to register their own pages in Settings, such as for configuring API keys in a hypothetical Sentry extension that logs all workflow errors.
- Perhaps extensions could supersede, or at least include the functionality of, the Hooks feature. Something similar is already available, I believe. Extensions might be interested in general events like a workflow/step starting/finishing/erroring, or a workflow being created/saved/deleted.
- I’d really like for extensions to be able to access the canvas, as mentioned in post #9, though that might sound quite challenging. I was recently trying to make callin.io's editor fully multiplayer (think Google Docs or Lucidchart, with mouse cursors for each user visible on the canvas, so if someone drags a node, everyone else sees it instantly. I even wanted a shared test execution for everyone in the same workflow). I couldn't find a way to access the canvas state; I think Vueflow is used as the primary source of that state, and callin.io simply receives changes without pushing them into Vueflow.
- Allow extensions to add entirely new node UIs.
- For example, in callin.io all nodes have the same UI (they are squares/rectangles on the canvas, and double-clicking them opens the parameters panel for the node). There’s *one* exception that comes to mind: the Sticky Notes node. It has entirely separate render code, and double-clicking it doesn’t open a panel. I've often wanted a "pen" tool to scribble on the canvas (like Zoom's drawing functionality where you can draw on a shared screen). An extension could provide this, as long as extensions can fully control how that node type is rendered (unlike custom nodes that can control fields in the node's settings but can't break out of the settings panel).
- Another example: I maintain an OpenCV node for image processing, and I'd love a "preview" node that acts like a TV: you connect it somewhere, and it always displays an image from its input data. Something like this (imagine the yellow sticky notes displaying a changing image based on input items):
Or consider the second image in post #16, which resembles an AI image generation UI, and I assume the pictures in the flow change dynamically. callin.io would need a completely new node UI, which a simple custom node cannot provide.
- Another idea, perhaps separate: allow extensions to register new custom node UI element types. Admittedly, this is less useful as it requires node creators to know about and use that new element type, unless the same person writes the extension and the custom nodes. For example, this could be used to change the UI for HTTP headers from pairs of text fields (one pair for each Name+Value for each header) into a table similar to the one found in Postman/Insomnia/Bruno/other HTTP clients (two columns, Name and Value, and as many rows as headers).
- Giving the ability to publish extensions on NPM, perhaps similar to the experience of discovering and installing community nodes. I'm mentioning this because installing things via NPM is much easier than dropping folders into the in-tree source code of callin.io, which is where the current sample extension resides.
- Allowing extensions to add arbitrary data to callin.io entities (e.g., workflows, executions, folders, projects, users). With this, an extension could, for instance, add a "docsLink" property to each workflow and folder, allowing it to surface that link in the UI (as described in the third bullet point of post #15). Or it could add an "isVerified" property to workflows to provide a badge, similar to what Twitter or YouTube accounts have, with the goal of offering users guidance on known-good workflows to start with. Or adding a Slack ID to each user so they can be pinged when their workflows fail.
- Possible extension: allowing extensions to register their own tables/models in the callin.io database, perhaps even providing access to their own migration files. However, I can see this becoming complex due to different DB engines, dependencies between the core DB state and the extension, and potential conflicts between extensions.
- Allow extensions to hook into the Tournament evaluator, to add either new functions on existing data types (e.g., adding new functions to String or Object) or entirely new global functions/variables (such as adding $tomorrow that returns a DateTime object like $today). This would benefit, for example, this custom node https://www.npmjs.com/package/n8n-nodes-text-manipulation . It exposes, for instance, a "Kebab Case" operation, but needing an entire node for that seems slightly excessive. If it could be a new function on the String type, allowing us to do `{{ $json.someField.toKebabCase() }}`, that would be useful. Similarly, we could have `{{ $randomChoice(1, 6) }}` if global functions can be registered. Or perhaps that would be better handled by allowing custom nodes to hook into Tournament; I'm not sure. For inspiration, consider Jira, where apps can add custom JQL functions used by Jira’s custom search language.
That’s all I can think of right now. Hope some of this is useful! And, by the way, extensions sound amazing. There’s just so much potential there...
Posted : 21/05/2025 6:26 am
Page 2 / 2
Prev