* Edit workflow returns workflow * Condense workflkow conosle * Limit console results to 2 * mark checkoff v1 * Mark and checkoff todo * Fixes * Plan mode * fix agent output * broken * Fixes * Fix diff mode persist * Fix diff coloring * Undo/redo * Checkpoint udno redo * fix(templates): fix templates details page (#1942) * Fix template details * Fix deps * fix(templates-details): restore approval feature, and keep details UI consistent, smoothen out creation of profile (#1943) * fix(templates): view current ui * update UI to be less cluttered * make state management for creating user profile smoother * fix autoselect logic * fix lint * fix(landing): need to propagate landing page copilot prompt (#1944) * fix(wand): subblocks should not be overwritten after wand gen (#1946) * fix(settings): fix broken api keys, help modal, logs, workflow renaming (#1945) * fix(settings): fix broken api keys, help modal, logs, workflow renaming * fix build * cleanup * use emcn * fix(files): changed file input value sample from string -> object (#1947) * improvement: usage-indicator UI (#1948) * fix(deploy): fix button (#1949) * fix(executor): consolidate execution hooks (#1950) * fix(autoconnect): should check if triggermode is set from the toolbar drag event directly (#1951) * improvement: templates styling (#1952) * improvement: template use button (#1954) * feat(newgifs): added new gifs (#1953) * new gifs * changed wording * changed wording * lowercase * changed wording * remove blog stuff --------- Co-authored-by: aadamgough <adam@sim.ai> Co-authored-by: waleed <walif6@gmail.com> * feat(drizzle): added ods for analytics from drizzle (#1956) * feat(drizzle): added ods for analytics from drizzle * clean * fix(sheets): file selector had incorrect provider (#1958) * feat(docs): added docs analytics drizzle ods (#1957) * feat(docs): added docs analytics drizzle ods * fix build * fix provider for docs selector (#1959) * fix(custom-tools): updates to legacy + copilot generated custom tools (#1960) * fix(custom-tools): updates to existing tools * don't reorder custom tools in modal based on edit time * restructure custom tools to persist copilot generated tools * fix tests * fix(slack): remove update message incorrect canonical param (#1964) * fix(slack): send message tool * add logging * add more logs * add more logs * fix canonical param * improvement(templates): add share button, serve public templates routes for unauthenticated users and workspace one for authenticated users, improve settings style and organization (#1962) * improvement(templates): add share button, serve public templates routes for unauthenticated users and workspace one for authenticated users, improve settings style and organization * fix lint --------- Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> * fix(onedrive): incorrect canonical param (#1966) * fix(onedrive): incorrect canonical param * fix download file * fix * fix * Revert "fix" This reverts commitf68ccd75fd. * Revert "fix" This reverts commitf3d8acee7d. * fix(executor): streaming after tool calls (#1963) * Provider changes * Fix lint * fix(code): readd wand to code subblock (#1969) * fix(cmd-k): z-index + reoder tools, triggers (#1970) * fix(cmd-k): z-index + reoder tools, triggers * fix more z-index styling * fix(executor): streaming response format (#1972) * fix(workflow-block): fix redeploy header to not repeatedly show redeploy when redeploy is not necessary (#1973) * fix(workflow-block): fix redeploy header to not repeatedly show redeploy when redeploy is not necessary * cleanup * improvement(platform): chat, emcn, terminal, usage-limit (#1974) * improvement(usage-indicator): layout * improvement: expand default terminal height * fix: swap workflow block ports * improvement: chat initial positioning * improvement(chat): display; improvement(emcn): popover attributes * fix lint * feat(settings): added reactquery for settings, removed zustand stores, added apollo, added workflow block selector dropdown search, added add environment variable option to empty env var dropdown (#1971) * feat(settings): added reactquery for settings, removed zustand stores, added apollo, added workflow block selector dropdown search, added add environment variable option to empty env var dropdown * fix delete dialog for copilot keys * simplify combobox * fix more z indices * consolidated duplicate hooks --------- Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> * fix(copilot-subflows): copilot-added subflows id mismatch (#1977) * feat(i18n): update translations (#1978) * feat(i18n): update translations * fix build --------- Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com> * fix(logs): show block inputs (#1979) * Fix executor lgos block inputs * Fix Comment * fix(onedrive): parse array values correctly (#1981) * fix(onedrive): parse array values correctly * fix onedrive * fix * fix onedrive input parsing by reusing code subblock * fix type * feat(files): add presigned URL generation support for execution files (#1980) * fix(popovers): billed account + async example command (#1982) * fix(settings): update usage data in settings > subs to use reactquery hooks (#1983) * fix(settings): update usage data in settings > subs to use reactquery hooks * standardize usage pills calculation * fix(output-selector): z-index in chat deploy modal (#1984) * improvement(logs): improved logs search (#1985) * improvement(logs): improved logs search * more * ack PR comments * feat(slack): added slack full message object in response (#1987) * feat(slack): add better error messages, reminder to add bot to app (#1990) * feat(i18n): update translations (#1989) Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com> * fix(landing): hero stripe icon (#1988) * Temp * Update * Update * Update * Progress * Diff store fixes * simplify sockets ops for diff store * Search patterns tool * Better tool calls * Fix sanitizationg * Context window display * fix(variables): fix double stringification (#1991) * improvement(variables): support dot notation for nested objects (#1992) * improvement(tanstack): migrate multiple stores (#1994) * improvement(tanstack): migrate folders, knowledge to tanstack * fix types * fix(folders): duplicate (#1996) * fix(variables): fix variables block json resolution (#1997) * Improvement(ui/ux): signup, command-list, cursors, search modal, workflow runs, usage indicator (#1998) * improvement: signup loading, command-list, cursors, search modal ordering * improvement: workflow runs, search modal * improvement(usage-indicator): ui/ux * test(pr): hackathon (#1999) * test(pr): github trigger (#2000) * fix(usage-indicator): conditional rendering, upgrade, and ui/ux (#2001) * fix: usage-limit indicator and render conditonally on is billing enabled * fix: upgrade render * fix(notes): fix notes, tighten spacing, update deprecated zustand function, update use mention data to ignore block positon (#2002) * fix(pdfs): use unpdf instead of pdf-parse (#2004) * fix(modals): fix z-index for various modals and output selector and variables (#2005) * fix(condition): treat condition input the same as the code subblock (#2006) * feat(models): added gpt-5.1 (#2007) * improvement: runpath edges, blocks, active (#2008) * feat(i18n): update translations (#2009) * fix(triggers): check triggermode and consolidate block type (#2011) * fix(triggers): disabled trigger shouldn't be added to dag (#2012) * Fix disabled blocks * Comments * Fix api/chat trigger not found message * fix(tags): only show start block upstream if is ancestor (#2013) * fix(variables): Fix resolution on double < (#2016) * Fix variable <> * Ling * Clean * feat(billing): add notif for first failed payment, added upgrade email from free, updated providers that supported granular tool control to support them, fixed envvar popover, fixed redirect to wrong workspace after oauth connect (#2015) * feat(billing): add notif for first failed payment, added upgrade email from free, updated providers that supported granular tool control to support them, fixed envvar popover, fixed redirect to wrong workspace after oauth connect * fix build * ack PR comments * feat(performance): added reactquery hooks for workflow operations, for logs, fixed logs reloading, fix subscription UI (#2017) * feat(performance): added reactquery hooks for workflow operations, for logs, fixed logs reloading, fix subscription UI * use useInfiniteQuery for logs fetching * fix(copilot): run workflow supports input format and fix run id (#2018) * fix(router): fix error edge in router block + fix source handle problem (#2019) * Fix router block error port handling * Remove comment * Fix edge execution * improvement: code subblock, action bar, connections (#2024) * improvement: action bar, connections * fix: code block draggable resize * fix(response): fix response block http format (#2027) * Fix response block * Lint * fix(notes): fix notes block spacing, additional logs for billing transfer route (#2029) * fix(usage-data): refetch on usage limit update in settings (#2032) * fix(overage): fix pill calculation in the usage indicator to be consistent across views (#2034) * fix(workflows): fixed workflow loading in without start block, added templates RQ hook, cleaned up unused templates code (#2035) * fix(triggers): dedup + not surfacing deployment status log (#2033) * fix(triggers): dedup + not surfacing deployment status log * fix ms teams * change to microsoftteams * Revert "change to microsoftteams" This reverts commit217f808641. * fix * fix * fix provider name * fix oauth for msteams * improvement(undo-redo): expand undo-redo store to store 100 ops instead of 15 (#2036) * improvement(undo-redo): expand undo-redo store to store 100 ops instead of 15 * prevent undo-redo from interfering with subblock browser text undo * improvement(docs): remove copy page from mobile view on docs (#2037) * improvement(docs): remove copy page from mobile view on docs * bring title and pagenav lower on mobile * added cursor pointer to clickable components in docs * fix(workflow-block): clearing child workflow input format field must lazy cascade parent workflow state deletion (#2038) * Error tools * Ui tools * Navigate ui tool * Combine env vars and oauth tools * Plan mode section * Plan mode v1 * Plan mode v1 * Plan mode improvements * Build plan button * Make workflow plan editable * Tool improvements * Fix build plan button * Lint * Fix * Fix lint * Fix plan * Remove migrations * fix undo/redo settling of ops * Add migratinos back * Smoothen out diff store * Hide plan mode * Fix lint * Edit run workflow params * Fix lint * Fix tests * Fix typing * Fix build errors and lint * Fix build * Fix tests --------- Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: Waleed <walif6@gmail.com> Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com> Co-authored-by: Adam Gough <77861281+aadamgough@users.noreply.github.com> Co-authored-by: aadamgough <adam@sim.ai> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: Emir Karabeg <emirkarabeg@berkeley.edu> Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
Sim SDKs
This directory contains the official SDKs for Sim, allowing developers to execute workflows programmatically from their applications.
Available SDKs
Package Installation Commands
- TypeScript/JavaScript:
npm install simstudio-ts-sdk - Python:
pip install simstudio-sdk
🟢 TypeScript/JavaScript SDK (simstudio-ts-sdk)
Directory: ts-sdk/
The TypeScript SDK provides type-safe workflow execution for Node.js and browser environments.
Installation:
npm install simstudio-ts-sdk
# or
yarn add simstudio-ts-sdk
# or
bun add simstudio-ts-sdk
Quick Start:
import { SimStudioClient } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: 'your-api-key-here'
});
const result = await client.executeWorkflow('workflow-id', {
input: { message: 'Hello, world!' }
});
🐍 Python SDK (simstudio-sdk)
Directory: python-sdk/
The Python SDK provides Pythonic workflow execution with comprehensive error handling and data classes.
Installation:
pip install simstudio-sdk
Quick Start:
from simstudio import SimStudioClient
client = SimStudioClient(api_key='your-api-key-here')
result = client.execute_workflow('workflow-id',
input_data={'message': 'Hello, world!'})
Core Features
Both SDKs provide the same core functionality:
✅ Workflow Execution - Execute deployed workflows with optional input data
✅ Status Checking - Check deployment status and workflow readiness
✅ Error Handling - Comprehensive error handling with specific error codes
✅ Timeout Support - Configurable timeouts for workflow execution
✅ Input Validation - Validate workflows before execution
✅ Type Safety - Full type definitions (TypeScript) and data classes (Python)
API Compatibility
Both SDKs are built on top of the same REST API endpoints:
POST /api/workflows/{id}/execute- Execute workflow (with or without input)GET /api/workflows/{id}/status- Get workflow status
Authentication
Both SDKs use API key authentication via the X-API-Key header. You can obtain an API key by:
- Logging in to your Sim account
- Navigating to your workflow
- Clicking "Deploy" to deploy your workflow
- Creating or selecting an API key during deployment
Environment Variables
Both SDKs support environment variable configuration:
# Required
SIM_API_KEY=your-api-key-here
# Optional
SIM_BASE_URL=https://sim.ai # or your custom domain
Error Handling
Both SDKs provide consistent error handling with these error codes:
| Code | Description |
|---|---|
UNAUTHORIZED |
Invalid API key |
TIMEOUT |
Request timed out |
USAGE_LIMIT_EXCEEDED |
Account usage limit exceeded |
INVALID_JSON |
Invalid JSON in request body |
EXECUTION_ERROR |
General execution error |
STATUS_ERROR |
Error getting workflow status |
Examples
TypeScript Example
import { SimStudioClient, SimStudioError } from 'simstudio-ts-sdk';
const client = new SimStudioClient({
apiKey: process.env.SIM_API_KEY!
});
try {
// Check if workflow is ready
const isReady = await client.validateWorkflow('workflow-id');
if (!isReady) {
throw new Error('Workflow not deployed');
}
// Execute workflow
const result = await client.executeWorkflow('workflow-id', {
input: { data: 'example' },
timeout: 30000
});
if (result.success) {
console.log('Output:', result.output);
}
} catch (error) {
if (error instanceof SimStudioError) {
console.error(`Error ${error.code}: ${error.message}`);
}
}
Python Example
from simstudio import SimStudioClient, SimStudioError
import os
client = SimStudioClient(api_key=os.getenv('SIM_API_KEY'))
try:
# Check if workflow is ready
is_ready = client.validate_workflow('workflow-id')
if not is_ready:
raise Exception('Workflow not deployed')
# Execute workflow
result = client.execute_workflow('workflow-id',
input_data={'data': 'example'},
timeout=30.0)
if result.success:
print(f'Output: {result.output}')
except SimStudioError as error:
print(f'Error {error.code}: {error}')
Development
Building the SDKs
TypeScript SDK:
cd packages/ts-sdk
bun install
bun run build
Python SDK:
cd packages/python-sdk
pip install -e ".[dev]"
python -m build
Running Examples
TypeScript:
cd packages/ts-sdk
SIM_API_KEY=your-key bun run examples/basic-usage.ts
Python:
cd packages/python-sdk
SIM_API_KEY=your-key python examples/basic_usage.py
Testing
TypeScript:
cd packages/ts-sdk
bun run test
Python:
cd packages/python-sdk
pytest
Publishing
The SDKs are automatically published to npm and PyPI when changes are pushed to the main branch. See Publishing Setup for details on:
- Setting up GitHub secrets for automated publishing
- Manual publishing instructions
- Version management and semantic versioning
- Troubleshooting common issues
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests for your changes
- Run the test suite:
bun run test(TypeScript) orpytest(Python) - Update version numbers if needed
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
License
Both SDKs are licensed under the Apache-2.0 License. See the LICENSE file for details.