Skip to content

Commit 29c8903

Browse files
committed
feat(integrations): add Azure Data Explorer
Add a 14-operation Azure Data Explorer (Kusto) integration covering KQL queries, schema and metadata discovery, table management, inline and query-sourced ingestion, ingestion-failure triage, and arbitrary management commands. Authentication uses a Microsoft Entra service principal through an internal proxy route, since the Kusto token audience is per-cluster and cannot be expressed as a static-scope OAuth provider.
1 parent 0650eab commit 29c8903

35 files changed

Lines changed: 4565 additions & 6 deletions

apps/docs/components/icons.tsx

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3898,6 +3898,138 @@ export const ClaudeIcon = (props: SVGProps<SVGSVGElement>) => (
38983898
</svg>
38993899
)
39003900

3901+
export function AzureDataExplorerIcon(props: SVGProps<SVGSVGElement>) {
3902+
const id = useId()
3903+
const wedgeGradient = `adx_wedge_${id}`
3904+
const dashLongGradient = `adx_dash_long_${id}`
3905+
const dashTopGradient = `adx_dash_top_${id}`
3906+
const dashBottomGradient = `adx_dash_bottom_${id}`
3907+
3908+
return (
3909+
<svg
3910+
{...props}
3911+
width='18'
3912+
height='18'
3913+
viewBox='0 0 18 18'
3914+
fill='none'
3915+
xmlns='http://www.w3.org/2000/svg'
3916+
>
3917+
<path
3918+
d='M1.47,1.47,16.53,16.53a.57.57,0,0,0,1-.4V1.07A.57.57,0,0,0,16.93.5H1.87A.57.57,0,0,0,1.47,1.47Z'
3919+
fill={`url(#${wedgeGradient})`}
3920+
/>
3921+
<path d='M5.53,5.53l6.94,6.94,5-5V1.07A.57.57,0,0,0,16.93.5H10.56Z' fill='#50e6ff' />
3922+
<rect
3923+
x='-0.38'
3924+
y='12.85'
3925+
width='9.37'
3926+
height='1.7'
3927+
rx='0.27'
3928+
transform='translate(-8.43 7.06) rotate(-45)'
3929+
fill={`url(#${dashLongGradient})`}
3930+
/>
3931+
<rect
3932+
x='0.12'
3933+
y='9.23'
3934+
width='5.99'
3935+
height='1.7'
3936+
rx='0.27'
3937+
transform='translate(-6.22 5.15) rotate(-45)'
3938+
fill={`url(#${dashTopGradient})`}
3939+
/>
3940+
<rect
3941+
x='4.89'
3942+
y='14.04'
3943+
width='5.99'
3944+
height='1.7'
3945+
rx='0.27'
3946+
transform='translate(-8.22 9.93) rotate(-45)'
3947+
fill={`url(#${dashBottomGradient})`}
3948+
/>
3949+
<rect
3950+
x='9.19'
3951+
y='4.75'
3952+
width='1.7'
3953+
height='1.7'
3954+
rx='0.38'
3955+
transform='translate(-1.02 8.74) rotate(-45)'
3956+
fill='#fff'
3957+
/>
3958+
<rect
3959+
x='11.59'
3960+
y='2.35'
3961+
width='1.7'
3962+
height='1.7'
3963+
rx='0.38'
3964+
transform='translate(1.38 9.73) rotate(-45)'
3965+
fill='#fff'
3966+
/>
3967+
<rect
3968+
x='11.59'
3969+
y='7.15'
3970+
width='1.7'
3971+
height='1.7'
3972+
rx='0.38'
3973+
transform='translate(-2.01 11.14) rotate(-45)'
3974+
fill='#fff'
3975+
/>
3976+
<path
3977+
d='M13.91,5.33l.66-.66a.38.38,0,0,1,.54,0l.66.66a.38.38,0,0,1,0,.54l-.66.66a.38.38,0,0,1-.54,0l-.66-.66a.38.38,0,0,1,0-.54'
3978+
fill='#fff'
3979+
/>
3980+
<defs>
3981+
<linearGradient
3982+
id={wedgeGradient}
3983+
x1='1.3'
3984+
y1='8.6'
3985+
x2='17.5'
3986+
y2='8.6'
3987+
gradientUnits='userSpaceOnUse'
3988+
>
3989+
<stop offset='0.1' stopColor='#54aef0' />
3990+
<stop offset='1' stopColor='#1988d9' />
3991+
</linearGradient>
3992+
<linearGradient
3993+
id={dashLongGradient}
3994+
x1='0.5'
3995+
y1='13.7'
3996+
x2='8.11'
3997+
y2='13.7'
3998+
gradientTransform='translate(10.95 0.97) rotate(45)'
3999+
gradientUnits='userSpaceOnUse'
4000+
>
4001+
<stop offset='0' stopColor='#b3b2b3' />
4002+
<stop offset='1' stopColor='#979797' />
4003+
</linearGradient>
4004+
<linearGradient
4005+
id={dashTopGradient}
4006+
x1='0.5'
4007+
y1='10.08'
4008+
x2='5.72'
4009+
y2='10.08'
4010+
gradientTransform='translate(8.04 0.75) rotate(45)'
4011+
gradientUnits='userSpaceOnUse'
4012+
>
4013+
<stop offset='0' stopColor='#b3b2b3' />
4014+
<stop offset='1' stopColor='#979797' />
4015+
</linearGradient>
4016+
<linearGradient
4017+
id={dashBottomGradient}
4018+
x1='5.28'
4019+
y1='14.89'
4020+
x2='10.49'
4021+
y2='14.89'
4022+
gradientTransform='translate(12.84 -1.21) rotate(45)'
4023+
gradientUnits='userSpaceOnUse'
4024+
>
4025+
<stop offset='0' stopColor='#b3b2b3' />
4026+
<stop offset='1' stopColor='#979797' />
4027+
</linearGradient>
4028+
</defs>
4029+
</svg>
4030+
)
4031+
}
4032+
39014033
export function AzureIcon(props: SVGProps<SVGSVGElement>) {
39024034
const id = useId()
39034035
const gradient0 = `azure_paint0_${id}`

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
AshbyIcon,
2323
AthenaIcon,
2424
AttioIcon,
25+
AzureDataExplorerIcon,
2526
AzureIcon,
2627
BoxCompanyIcon,
2728
BrainIcon,
@@ -280,6 +281,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
280281
ashby: AshbyIcon,
281282
athena: AthenaIcon,
282283
attio: AttioIcon,
284+
azure_data_explorer: AzureDataExplorerIcon,
283285
azure_devops: AzureIcon,
284286
box: BoxCompanyIcon,
285287
brandfetch: BrandfetchIcon,

0 commit comments

Comments
 (0)