Skip to content

Commit 53fd92a

Browse files
authored
feat(obsidian): add Obsidian integration with 15 tools (#3455)
* feat(obsidian): add Obsidian integration with 15 tools * fix(obsidian): encode path segments individually to preserve slashes * improvement(obsidian): add type re-exports and improve output descriptions * fix(obsidian): remove unreachable 404 handling from transformResponse
1 parent 0a52b09 commit 53fd92a

25 files changed

+2293
-0
lines changed

apps/docs/components/icons.tsx

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,155 @@ export function PerplexityIcon(props: SVGProps<SVGSVGElement>) {
710710
)
711711
}
712712

713+
export function ObsidianIcon(props: SVGProps<SVGSVGElement>) {
714+
const id = useId()
715+
const bl = `${id}-bl`
716+
const tr = `${id}-tr`
717+
const tl = `${id}-tl`
718+
const br = `${id}-br`
719+
const te = `${id}-te`
720+
const le = `${id}-le`
721+
const be = `${id}-be`
722+
const me = `${id}-me`
723+
const clip = `${id}-clip`
724+
return (
725+
<svg {...props} viewBox='0 0 512 512' fill='none' xmlns='http://www.w3.org/2000/svg'>
726+
<radialGradient
727+
id={bl}
728+
cx='0'
729+
cy='0'
730+
gradientTransform='matrix(-59 -225 150 -39 161.4 470)'
731+
gradientUnits='userSpaceOnUse'
732+
r='1'
733+
>
734+
<stop offset='0' stopColor='#fff' stopOpacity='.4' />
735+
<stop offset='1' stopOpacity='.1' />
736+
</radialGradient>
737+
<radialGradient
738+
id={tr}
739+
cx='0'
740+
cy='0'
741+
gradientTransform='matrix(50 -379 280 37 360 374.2)'
742+
gradientUnits='userSpaceOnUse'
743+
r='1'
744+
>
745+
<stop offset='0' stopColor='#fff' stopOpacity='.6' />
746+
<stop offset='1' stopColor='#fff' stopOpacity='.1' />
747+
</radialGradient>
748+
<radialGradient
749+
id={tl}
750+
cx='0'
751+
cy='0'
752+
gradientTransform='matrix(69 -319 218 47 175.4 307)'
753+
gradientUnits='userSpaceOnUse'
754+
r='1'
755+
>
756+
<stop offset='0' stopColor='#fff' stopOpacity='.8' />
757+
<stop offset='1' stopColor='#fff' stopOpacity='.4' />
758+
</radialGradient>
759+
<radialGradient
760+
id={br}
761+
cx='0'
762+
cy='0'
763+
gradientTransform='matrix(-96 -163 187 -111 335.3 512.2)'
764+
gradientUnits='userSpaceOnUse'
765+
r='1'
766+
>
767+
<stop offset='0' stopColor='#fff' stopOpacity='.3' />
768+
<stop offset='1' stopOpacity='.3' />
769+
</radialGradient>
770+
<radialGradient
771+
id={te}
772+
cx='0'
773+
cy='0'
774+
gradientTransform='matrix(-36 166 -112 -24 310 128.2)'
775+
gradientUnits='userSpaceOnUse'
776+
r='1'
777+
>
778+
<stop offset='0' stopColor='#fff' stopOpacity='0' />
779+
<stop offset='1' stopColor='#fff' stopOpacity='.2' />
780+
</radialGradient>
781+
<radialGradient
782+
id={le}
783+
cx='0'
784+
cy='0'
785+
gradientTransform='matrix(88 89 -190 187 111 220.2)'
786+
gradientUnits='userSpaceOnUse'
787+
r='1'
788+
>
789+
<stop offset='0' stopColor='#fff' stopOpacity='.2' />
790+
<stop offset='1' stopColor='#fff' stopOpacity='.4' />
791+
</radialGradient>
792+
<radialGradient
793+
id={be}
794+
cx='0'
795+
cy='0'
796+
gradientTransform='matrix(9 130 -276 20 215 284)'
797+
gradientUnits='userSpaceOnUse'
798+
r='1'
799+
>
800+
<stop offset='0' stopColor='#fff' stopOpacity='.2' />
801+
<stop offset='1' stopColor='#fff' stopOpacity='.3' />
802+
</radialGradient>
803+
<radialGradient
804+
id={me}
805+
cx='0'
806+
cy='0'
807+
gradientTransform='matrix(-198 -104 327 -623 400 399.2)'
808+
gradientUnits='userSpaceOnUse'
809+
r='1'
810+
>
811+
<stop offset='0' stopColor='#fff' stopOpacity='.2' />
812+
<stop offset='.5' stopColor='#fff' stopOpacity='.2' />
813+
<stop offset='1' stopColor='#fff' stopOpacity='.3' />
814+
</radialGradient>
815+
<clipPath id={clip}>
816+
<path d='M.2.2h512v512H.2z' />
817+
</clipPath>
818+
<g clipPath={`url(#${clip})`}>
819+
<path
820+
d='M382.3 475.6c-3.1 23.4-26 41.6-48.7 35.3-32.4-8.9-69.9-22.8-103.6-25.4l-51.7-4a34 34 0 0 1-22-10.2l-89-91.7a34 34 0 0 1-6.7-37.7s55-121 57.1-127.3c2-6.3 9.6-61.2 14-90.6 1.2-7.9 5-15 11-20.3L248 8.9a34.1 34.1 0 0 1 49.6 4.3L386 125.6a37 37 0 0 1 7.6 22.4c0 21.3 1.8 65 13.6 93.2 11.5 27.3 32.5 57 43.5 71.5a17.3 17.3 0 0 1 1.3 19.2 1494 1494 0 0 1-44.8 70.6c-15 22.3-21.9 49.9-25 73.1z'
821+
fill='#6c31e3'
822+
/>
823+
<path
824+
d='M165.9 478.3c41.4-84 40.2-144.2 22.6-187-16.2-39.6-46.3-64.5-70-80-.6 2.3-1.3 4.4-2.2 6.5L60.6 342a34 34 0 0 0 6.6 37.7l89.1 91.7a34 34 0 0 0 9.6 7z'
825+
fill={`url(#${bl})`}
826+
/>
827+
<path
828+
d='M278.4 307.8c11.2 1.2 22.2 3.6 32.8 7.6 34 12.7 65 41.2 90.5 96.3 1.8-3.1 3.6-6.2 5.6-9.2a1536 1536 0 0 0 44.8-70.6 17 17 0 0 0-1.3-19.2c-11-14.6-32-44.2-43.5-71.5-11.8-28.2-13.5-72-13.6-93.2 0-8.1-2.6-16-7.6-22.4L297.6 13.2a34 34 0 0 0-1.5-1.7 96 96 0 0 1 2 54 198.3 198.3 0 0 1-17.6 41.3l-7.2 14.2a171 171 0 0 0-19.4 71c-1.2 29.4 4.8 66.4 24.5 115.8z'
829+
fill={`url(#${tr})`}
830+
/>
831+
<path
832+
d='M278.4 307.8c-19.7-49.4-25.8-86.4-24.5-115.9a171 171 0 0 1 19.4-71c2.3-4.8 4.8-9.5 7.2-14.1 7.1-13.9 14-27 17.6-41.4a96 96 0 0 0-2-54A34.1 34.1 0 0 0 248 9l-105.4 94.8a34.1 34.1 0 0 0-10.9 20.3l-12.8 85-.5 2.3c23.8 15.5 54 40.4 70.1 80a147 147 0 0 1 7.8 24.8c28-6.8 55.7-11 82.1-8.3z'
833+
fill={`url(#${tl})`}
834+
/>
835+
<path
836+
d='M333.6 511c22.7 6.2 45.6-12 48.7-35.4a187 187 0 0 1 19.4-63.9c-25.6-55-56.5-83.6-90.4-96.3-36-13.4-75.2-9-115 .7 8.9 40.4 3.6 93.3-30.4 162.2 4 1.8 8.1 3 12.5 3.3 0 0 24.4 2 53.6 4.1 29 2 72.4 17.1 101.6 25.2z'
837+
fill={`url(#${br})`}
838+
/>
839+
<g clipRule='evenodd' fillRule='evenodd'>
840+
<path
841+
d='M254.1 190c-1.3 29.2 2.4 62.8 22.1 112.1l-6.2-.5c-17.7-51.5-21.5-78-20.2-107.6a174.7 174.7 0 0 1 20.4-72c2.4-4.9 8-14.1 10.5-18.8 7.1-13.7 11.9-21 16-33.6 5.7-17.5 4.5-25.9 3.8-34.1 4.6 29.9-12.7 56-25.7 82.4a177.1 177.1 0 0 0-20.7 72z'
842+
fill={`url(#${te})`}
843+
/>
844+
<path
845+
d='M194.3 293.4c2.4 5.4 4.6 9.8 6 16.5L195 311c-2.1-7.8-3.8-13.4-6.8-20-17.8-42-46.3-63.6-69.7-79.5 28.2 15.2 57.2 39 75.7 81.9z'
846+
fill={`url(#${le})`}
847+
/>
848+
<path
849+
d='M200.6 315.1c9.8 46-1.2 104.2-33.6 160.9 27.1-56.2 40.2-110.1 29.3-160z'
850+
fill={`url(#${be})`}
851+
/>
852+
<path
853+
d='M312.5 311c53.1 19.9 73.6 63.6 88.9 100-19-38.1-45.2-80.3-90.8-96-34.8-11.8-64.1-10.4-114.3 1l-1.1-5c53.2-12.1 81-13.5 117.3 0z'
854+
fill={`url(#${me})`}
855+
/>
856+
</g>
857+
</g>
858+
</svg>
859+
)
860+
}
861+
713862
export function NotionIcon(props: SVGProps<SVGSVGElement>) {
714863
return (
715864
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50' width='1em' height='1em' {...props}>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ import {
103103
MySQLIcon,
104104
Neo4jIcon,
105105
NotionIcon,
106+
ObsidianIcon,
106107
OnePasswordIcon,
107108
OpenAIIcon,
108109
OutlookIcon,
@@ -265,6 +266,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
265266
mysql: MySQLIcon,
266267
neo4j: Neo4jIcon,
267268
notion_v2: NotionIcon,
269+
obsidian: ObsidianIcon,
268270
onedrive: MicrosoftOneDriveIcon,
269271
onepassword: OnePasswordIcon,
270272
openai: OpenAIIcon,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
"mysql",
9999
"neo4j",
100100
"notion",
101+
"obsidian",
101102
"onedrive",
102103
"onepassword",
103104
"openai",

0 commit comments

Comments
 (0)