Skip to content

Commit b3dbb44

Browse files
authored
improvement(jsm): destructured outputs for jsm, jira, and added 1password integration (#3174)
* improvement(jsm): destructured outputs for jsm, jira, and added 1password integration * update 1password to support cloud & locally hosted * updated & tested 1pass * added an additional wandConfig for OnePassword & jira search issues * finished jira * removed unused route * updated types * restore old outputs * updated types
1 parent 622d0ca commit b3dbb44

File tree

100 files changed

+7599
-1653
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

100 files changed

+7599
-1653
lines changed

apps/docs/components/icons.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5483,3 +5483,37 @@ export function AgentSkillsIcon(props: SVGProps<SVGSVGElement>) {
54835483
</svg>
54845484
)
54855485
}
5486+
5487+
export function OnePasswordIcon(props: SVGProps<SVGSVGElement>) {
5488+
return (
5489+
<svg {...props} viewBox='0 0 48 48' xmlns='http://www.w3.org/2000/svg' fill='none'>
5490+
<circle
5491+
cx='24'
5492+
cy='24'
5493+
r='21.5'
5494+
stroke='#000000'
5495+
strokeLinecap='round'
5496+
strokeLinejoin='round'
5497+
/>
5498+
<path
5499+
d='M28.083,17.28a7.8633,7.8633,0,0,1,0,13.44'
5500+
stroke='#000000'
5501+
strokeLinecap='round'
5502+
strokeLinejoin='round'
5503+
/>
5504+
<path
5505+
d='M19.917,30.72a7.8633,7.8633,0,0,1,0-13.44'
5506+
stroke='#000000'
5507+
strokeLinecap='round'
5508+
strokeLinejoin='round'
5509+
/>
5510+
<path
5511+
d='M26.067,10.43H21.933a2.0172,2.0172,0,0,0-2.016,2.016v6.36c2.358,1.281,2.736,2.562,0,3.843V35.574a2.0169,2.0169,0,0,0,2.016,2.015h4.134a2.0169,2.0169,0,0,0,2.016-2.015V29.213c-2.358-1.281-2.736-2.562,0-3.842V12.446A2.0172,2.0172,0,0,0,26.067,10.43Z'
5512+
fill='#000000'
5513+
stroke='#000000'
5514+
strokeLinecap='round'
5515+
strokeLinejoin='round'
5516+
/>
5517+
</svg>
5518+
)
5519+
}

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ import {
8080
MySQLIcon,
8181
Neo4jIcon,
8282
NotionIcon,
83+
OnePasswordIcon,
8384
OpenAIIcon,
8485
OutlookIcon,
8586
PackageSearchIcon,
@@ -214,6 +215,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
214215
neo4j: Neo4jIcon,
215216
notion_v2: NotionIcon,
216217
onedrive: MicrosoftOneDriveIcon,
218+
onepassword: OnePasswordIcon,
217219
openai: OpenAIIcon,
218220
outlook: OutlookIcon,
219221
parallel_ai: ParallelIcon,

apps/docs/content/docs/en/tools/airweave.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ With Airweave, you can:
2525
In Sim, the Airweave integration empowers your agents to search, summarize, and extract insights from all your organization’s data via a single tool. Use Airweave to drive rich, contextual knowledge retrieval within your workflows—whether answering questions, generating summaries, or supporting dynamic decision-making.
2626
{/* MANUAL-CONTENT-END */}
2727

28+
2829
## Usage Instructions
2930

3031
Search across your synced data sources using Airweave. Supports semantic search with hybrid, neural, or keyword retrieval strategies. Optionally generate AI-powered answers from search results.

apps/docs/content/docs/en/tools/jira.mdx

Lines changed: 458 additions & 53 deletions
Large diffs are not rendered by default.

apps/docs/content/docs/en/tools/jira_service_management.mdx

Lines changed: 192 additions & 16 deletions
Large diffs are not rendered by default.

apps/docs/content/docs/en/tools/meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
"neo4j",
7777
"notion",
7878
"onedrive",
79+
"onepassword",
7980
"openai",
8081
"outlook",
8182
"parallel_ai",
Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
---
2+
title: 1Password
3+
description: Manage secrets and items in 1Password vaults
4+
---
5+
6+
import { BlockInfoCard } from "@/components/ui/block-info-card"
7+
8+
<BlockInfoCard
9+
type="onepassword"
10+
color="#E0E0E0"
11+
/>
12+
13+
{/* MANUAL-CONTENT-START:intro */}
14+
[1Password](https://1password.com) is a widely trusted password manager and secrets vault solution, allowing individuals and teams to securely store, access, and share passwords, API credentials, and sensitive information. With robust encryption, granular access controls, and seamless syncing across devices, 1Password supports teams and organizations in managing secrets efficiently and securely.
15+
16+
The [1Password Connect API](https://developer.1password.com/docs/connect/) allows programmatic access to vaults and items within an organization's 1Password account. This integration in Sim lets you automate secret retrieval, onboarding workflows, secret rotation, vault audits, and more, all in a secure and auditable manner.
17+
18+
With 1Password in your Sim workflow, you can:
19+
20+
- **List, search, and retrieve vaults**: Access metadata or browse available vaults for organizing secrets by project or purpose
21+
- **Fetch items and secrets**: Get credentials, API keys, or custom secrets in real time to power your workflows securely
22+
- **Create, update, or delete secrets**: Automate secret management, provisioning, and rotation for enhanced security practices
23+
- **Integrate with CI/CD and automation**: Fetch credentials or tokens only when needed, reducing manual work and reducing risk
24+
- **Ensure access controls**: Leverage role-based access and fine-grained permissions to control which agents or users can access specific secrets
25+
26+
By connecting Sim with 1Password, you empower your agents to securely manage secrets, reduce manual overhead, and maintain best practices for security automation, incident response, and DevOps workflows—all while ensuring secrets never leave a controlled environment.
27+
{/* MANUAL-CONTENT-END */}
28+
29+
30+
## Usage Instructions
31+
32+
Access and manage secrets stored in 1Password vaults using the Connect API or Service Account SDK. List vaults, retrieve items with their fields and secrets, create new items, update existing ones, delete items, and resolve secret references.
33+
34+
35+
36+
## Tools
37+
38+
### `onepassword_list_vaults`
39+
40+
List all vaults accessible by the Connect token or Service Account
41+
42+
#### Input
43+
44+
| Parameter | Type | Required | Description |
45+
| --------- | ---- | -------- | ----------- |
46+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
47+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
48+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
49+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
50+
| `filter` | string | No | SCIM filter expression \(e.g., name eq "My Vault"\) |
51+
52+
#### Output
53+
54+
| Parameter | Type | Description |
55+
| --------- | ---- | ----------- |
56+
| `vaults` | array | List of accessible vaults |
57+
|`id` | string | Vault ID |
58+
|`name` | string | Vault name |
59+
|`description` | string | Vault description |
60+
|`attributeVersion` | number | Vault attribute version |
61+
|`contentVersion` | number | Vault content version |
62+
|`type` | string | Vault type \(USER_CREATED, PERSONAL, EVERYONE, TRANSFER\) |
63+
|`createdAt` | string | Creation timestamp |
64+
|`updatedAt` | string | Last update timestamp |
65+
66+
### `onepassword_get_vault`
67+
68+
Get details of a specific vault by ID
69+
70+
#### Input
71+
72+
| Parameter | Type | Required | Description |
73+
| --------- | ---- | -------- | ----------- |
74+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
75+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
76+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
77+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
78+
| `vaultId` | string | Yes | The vault UUID |
79+
80+
#### Output
81+
82+
| Parameter | Type | Description |
83+
| --------- | ---- | ----------- |
84+
| `id` | string | Vault ID |
85+
| `name` | string | Vault name |
86+
| `description` | string | Vault description |
87+
| `attributeVersion` | number | Vault attribute version |
88+
| `contentVersion` | number | Vault content version |
89+
| `items` | number | Number of items in the vault |
90+
| `type` | string | Vault type \(USER_CREATED, PERSONAL, EVERYONE, TRANSFER\) |
91+
| `createdAt` | string | Creation timestamp |
92+
| `updatedAt` | string | Last update timestamp |
93+
94+
### `onepassword_list_items`
95+
96+
List items in a vault. Returns summaries without field values.
97+
98+
#### Input
99+
100+
| Parameter | Type | Required | Description |
101+
| --------- | ---- | -------- | ----------- |
102+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
103+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
104+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
105+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
106+
| `vaultId` | string | Yes | The vault UUID to list items from |
107+
| `filter` | string | No | SCIM filter expression \(e.g., title eq "API Key" or tag eq "production"\) |
108+
109+
#### Output
110+
111+
| Parameter | Type | Description |
112+
| --------- | ---- | ----------- |
113+
| `items` | array | List of items in the vault \(summaries without field values\) |
114+
|`id` | string | Item ID |
115+
|`title` | string | Item title |
116+
|`vault` | object | Vault reference |
117+
|`id` | string | Vault ID |
118+
|`category` | string | Item category \(e.g., LOGIN, API_CREDENTIAL\) |
119+
|`urls` | array | URLs associated with the item |
120+
|`href` | string | URL |
121+
|`label` | string | URL label |
122+
|`primary` | boolean | Whether this is the primary URL |
123+
|`favorite` | boolean | Whether the item is favorited |
124+
|`tags` | array | Item tags |
125+
|`version` | number | Item version number |
126+
|`state` | string | Item state \(ARCHIVED or DELETED\) |
127+
|`createdAt` | string | Creation timestamp |
128+
|`updatedAt` | string | Last update timestamp |
129+
|`lastEditedBy` | string | ID of the last editor |
130+
131+
### `onepassword_get_item`
132+
133+
Get full details of an item including all fields and secrets
134+
135+
#### Input
136+
137+
| Parameter | Type | Required | Description |
138+
| --------- | ---- | -------- | ----------- |
139+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
140+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
141+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
142+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
143+
| `vaultId` | string | Yes | The vault UUID |
144+
| `itemId` | string | Yes | The item UUID to retrieve |
145+
146+
#### Output
147+
148+
| Parameter | Type | Description |
149+
| --------- | ---- | ----------- |
150+
| `response` | json | Operation response data |
151+
152+
### `onepassword_create_item`
153+
154+
Create a new item in a vault
155+
156+
#### Input
157+
158+
| Parameter | Type | Required | Description |
159+
| --------- | ---- | -------- | ----------- |
160+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
161+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
162+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
163+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
164+
| `vaultId` | string | Yes | The vault UUID to create the item in |
165+
| `category` | string | Yes | Item category \(e.g., LOGIN, PASSWORD, API_CREDENTIAL, SECURE_NOTE, SERVER, DATABASE\) |
166+
| `title` | string | No | Item title |
167+
| `tags` | string | No | Comma-separated list of tags |
168+
| `fields` | string | No | JSON array of field objects \(e.g., \[\{"label":"username","value":"admin","type":"STRING","purpose":"USERNAME"\}\]\) |
169+
170+
#### Output
171+
172+
| Parameter | Type | Description |
173+
| --------- | ---- | ----------- |
174+
| `response` | json | Operation response data |
175+
176+
### `onepassword_replace_item`
177+
178+
Replace an entire item with new data (full update)
179+
180+
#### Input
181+
182+
| Parameter | Type | Required | Description |
183+
| --------- | ---- | -------- | ----------- |
184+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
185+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
186+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
187+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
188+
| `vaultId` | string | Yes | The vault UUID |
189+
| `itemId` | string | Yes | The item UUID to replace |
190+
| `item` | string | Yes | JSON object representing the full item \(e.g., \{"vault":\{"id":"..."\},"category":"LOGIN","title":"My Item","fields":\[...\]\}\) |
191+
192+
#### Output
193+
194+
| Parameter | Type | Description |
195+
| --------- | ---- | ----------- |
196+
| `response` | json | Operation response data |
197+
198+
### `onepassword_update_item`
199+
200+
Update an existing item using JSON Patch operations (RFC6902)
201+
202+
#### Input
203+
204+
| Parameter | Type | Required | Description |
205+
| --------- | ---- | -------- | ----------- |
206+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
207+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
208+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
209+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
210+
| `vaultId` | string | Yes | The vault UUID |
211+
| `itemId` | string | Yes | The item UUID to update |
212+
| `operations` | string | Yes | JSON array of RFC6902 patch operations \(e.g., \[\{"op":"replace","path":"/title","value":"New Title"\}\]\) |
213+
214+
#### Output
215+
216+
| Parameter | Type | Description |
217+
| --------- | ---- | ----------- |
218+
| `response` | json | Operation response data |
219+
220+
### `onepassword_delete_item`
221+
222+
Delete an item from a vault
223+
224+
#### Input
225+
226+
| Parameter | Type | Required | Description |
227+
| --------- | ---- | -------- | ----------- |
228+
| `connectionMode` | string | No | Connection mode: "service_account" or "connect" |
229+
| `serviceAccountToken` | string | No | 1Password Service Account token \(for Service Account mode\) |
230+
| `apiKey` | string | No | 1Password Connect API token \(for Connect Server mode\) |
231+
| `serverUrl` | string | No | 1Password Connect server URL \(for Connect Server mode\) |
232+
| `vaultId` | string | Yes | The vault UUID |
233+
| `itemId` | string | Yes | The item UUID to delete |
234+
235+
#### Output
236+
237+
| Parameter | Type | Description |
238+
| --------- | ---- | ----------- |
239+
| `success` | boolean | Whether the item was successfully deleted |
240+
241+
### `onepassword_resolve_secret`
242+
243+
Resolve a secret reference (op://vault/item/field) to its value. Service Account mode only.
244+
245+
#### Input
246+
247+
| Parameter | Type | Required | Description |
248+
| --------- | ---- | -------- | ----------- |
249+
| `connectionMode` | string | No | Connection mode: must be "service_account" for this operation |
250+
| `serviceAccountToken` | string | Yes | 1Password Service Account token |
251+
| `secretReference` | string | Yes | Secret reference URI \(e.g., op://vault-name/item-name/field-name or op://vault-name/item-name/section-name/field-name\) |
252+
253+
#### Output
254+
255+
| Parameter | Type | Description |
256+
| --------- | ---- | ----------- |
257+
| `value` | string | The resolved secret value |
258+
| `reference` | string | The original secret reference URI |
259+
260+

apps/sim/app/api/tools/jira/add-attachment/route.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,24 @@ export async function POST(request: NextRequest) {
9090
)
9191
}
9292

93-
const attachments = await response.json()
94-
const attachmentIds = Array.isArray(attachments)
95-
? attachments.map((attachment) => attachment.id).filter(Boolean)
96-
: []
93+
const jiraAttachments = await response.json()
94+
const attachmentsList = Array.isArray(jiraAttachments) ? jiraAttachments : []
95+
96+
const attachmentIds = attachmentsList.map((att: any) => att.id).filter(Boolean)
97+
const attachments = attachmentsList.map((att: any) => ({
98+
id: att.id ?? '',
99+
filename: att.filename ?? '',
100+
mimeType: att.mimeType ?? '',
101+
size: att.size ?? 0,
102+
content: att.content ?? '',
103+
}))
97104

98105
return NextResponse.json({
99106
success: true,
100107
output: {
101108
ts: new Date().toISOString(),
102109
issueKey: validatedData.issueKey,
110+
attachments,
103111
attachmentIds,
104112
files: filesOutput,
105113
},

0 commit comments

Comments
 (0)