Skip to content

Commit 4b9e5b6

Browse files
authored
Merge pull request #915 from trycompai/mariano/comp-166-osquery-agent-integration
[dev] [Marfuen] mariano/comp-166-osquery-agent-integration
2 parents 75eb00d + b9e72e5 commit 4b9e5b6

9 files changed

Lines changed: 1317 additions & 1232 deletions

File tree

apps/app/src/app/(app)/[orgId]/people/[employeeId]/components/Employee.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ interface EmployeeDetailsProps {
2121
})[];
2222
fleetPolicies: FleetPolicy[];
2323
host: Host;
24+
isFleetEnabled: boolean;
2425
}
2526

2627
export function Employee({
@@ -29,6 +30,7 @@ export function Employee({
2930
trainingVideos,
3031
fleetPolicies,
3132
host,
33+
isFleetEnabled,
3234
}: EmployeeDetailsProps) {
3335
return (
3436
<div className="flex flex-col gap-4">
@@ -39,6 +41,7 @@ export function Employee({
3941
trainingVideos={trainingVideos}
4042
fleetPolicies={fleetPolicies}
4143
host={host}
44+
isFleetEnabled={isFleetEnabled}
4245
/>
4346
</div>
4447
);

apps/app/src/app/(app)/[orgId]/people/[employeeId]/components/EmployeeTasks.tsx

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export const EmployeeTasks = ({
1818
trainingVideos,
1919
host,
2020
fleetPolicies,
21+
isFleetEnabled,
2122
}: {
2223
employee: Member & {
2324
user: User;
@@ -28,6 +29,7 @@ export const EmployeeTasks = ({
2829
})[];
2930
host: Host;
3031
fleetPolicies: FleetPolicy[];
32+
isFleetEnabled: boolean;
3133
}) => {
3234
return (
3335
<Card>
@@ -46,7 +48,7 @@ export const EmployeeTasks = ({
4648
<TabsList className="mb-4">
4749
<TabsTrigger value="policies">Policies</TabsTrigger>
4850
<TabsTrigger value="training">Training Videos</TabsTrigger>
49-
<TabsTrigger value="device">Device</TabsTrigger>
51+
{isFleetEnabled && <TabsTrigger value="device">Device</TabsTrigger>}
5052
</TabsList>
5153

5254
<TabsContent value="policies">
@@ -120,39 +122,47 @@ export const EmployeeTasks = ({
120122
</div>
121123
</TabsContent>
122124

123-
<TabsContent value="device">
124-
<Card>
125-
<CardHeader>
126-
<CardTitle>{host.computer_name}'s Policies</CardTitle>
127-
</CardHeader>
128-
<CardContent className="space-y-3">
129-
{fleetPolicies.map((policy) => (
130-
<div
131-
key={policy.id}
132-
className={cn(
133-
"hover:bg-muted/50 flex items-center justify-between rounded-md border border-l-4 p-3 shadow-sm transition-colors",
134-
policy.response === "pass"
135-
? "border-l-green-500"
136-
: "border-l-red-500",
137-
)}
138-
>
139-
<p className="font-medium">{policy.name}</p>
140-
{policy.response === "pass" ? (
141-
<div className="flex items-center gap-1 text-green-600">
142-
<CheckCircle2 size={16} />
143-
<span>Pass</span>
144-
</div>
145-
) : (
146-
<div className="flex items-center gap-1 text-red-600">
147-
<XCircle size={16} />
148-
<span>Fail</span>
125+
{isFleetEnabled && (
126+
<TabsContent value="device">
127+
{host ? (
128+
<Card>
129+
<CardHeader>
130+
<CardTitle>{host.computer_name}'s Policies</CardTitle>
131+
</CardHeader>
132+
<CardContent className="space-y-3">
133+
{fleetPolicies.map((policy) => (
134+
<div
135+
key={policy.id}
136+
className={cn(
137+
"hover:bg-muted/50 flex items-center justify-between rounded-md border border-l-4 p-3 shadow-sm transition-colors",
138+
policy.response === "pass"
139+
? "border-l-green-500"
140+
: "border-l-red-500",
141+
)}
142+
>
143+
<p className="font-medium">{policy.name}</p>
144+
{policy.response === "pass" ? (
145+
<div className="flex items-center gap-1 text-green-600">
146+
<CheckCircle2 size={16} />
147+
<span>Pass</span>
148+
</div>
149+
) : (
150+
<div className="flex items-center gap-1 text-red-600">
151+
<XCircle size={16} />
152+
<span>Fail</span>
153+
</div>
154+
)}
149155
</div>
150-
)}
151-
</div>
152-
))}
153-
</CardContent>
154-
</Card>
155-
</TabsContent>
156+
))}
157+
</CardContent>
158+
</Card>
159+
) : (
160+
<div className="text-muted-foreground py-6 text-center">
161+
<p>No device found.</p>
162+
</div>
163+
)}
164+
</TabsContent>
165+
)}
156166
</Tabs>
157167
</CardContent>
158168
</Card>

apps/app/src/app/(app)/[orgId]/people/[employeeId]/page.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { headers } from "next/headers";
1111
import { notFound, redirect } from "next/navigation";
1212
import { Employee } from "./components/Employee";
1313
import { fleet } from "@/lib/fleet";
14+
import { getPostHogClient } from "@/app/posthog";
1415

1516
export default async function EmployeeDetailsPage({
1617
params,
@@ -39,6 +40,10 @@ export default async function EmployeeDetailsPage({
3940
}
4041

4142
const { fleetPolicies, device } = await getFleetPolicies(employee);
43+
const isFleetEnabled = await getPostHogClient()?.isFeatureEnabled(
44+
"is-fleet-enabled",
45+
session?.session.userId,
46+
);
4247

4348
return (
4449
<Employee
@@ -47,6 +52,7 @@ export default async function EmployeeDetailsPage({
4752
trainingVideos={employeeTrainingVideos}
4853
fleetPolicies={fleetPolicies}
4954
host={device}
55+
isFleetEnabled={isFleetEnabled ?? false}
5056
/>
5157
);
5258
}

apps/framework-editor/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"@radix-ui/react-slider": "1.3.5",
2727
"@radix-ui/react-slot": "1.1.1",
2828
"@radix-ui/react-switch": "1.2.5",
29-
"@radix-ui/react-tabs": "1.1.2",
29+
"@radix-ui/react-tabs": "^1.1.12",
3030
"@radix-ui/react-toast": "1.2.4",
3131
"@radix-ui/react-toggle": "1.1.1",
3232
"@radix-ui/react-toggle-group": "1.1.1",

apps/trust/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"@radix-ui/react-slider": "1.3.5",
2727
"@radix-ui/react-slot": "1.1.1",
2828
"@radix-ui/react-switch": "1.2.5",
29-
"@radix-ui/react-tabs": "1.1.2",
29+
"@radix-ui/react-tabs": "^1.1.12",
3030
"@radix-ui/react-toast": "1.2.4",
3131
"@radix-ui/react-toggle": "1.1.1",
3232
"@radix-ui/react-toggle-group": "1.1.1",

bun.lock

Lines changed: 29 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"@radix-ui/react-slider": "1.3.5",
2424
"@radix-ui/react-slot": "1.1.1",
2525
"@radix-ui/react-switch": "1.2.5",
26-
"@radix-ui/react-tabs": "1.1.2",
26+
"@radix-ui/react-tabs": "^1.1.12",
2727
"@radix-ui/react-toast": "1.2.4",
2828
"@radix-ui/react-tooltip": "1.1.6",
2929
"@radix-ui/react-use-is-hydrated": "^0.1.0",

packages/ui/src/components/tabs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import * as React from "react";
44
import * as TabsPrimitive from "@radix-ui/react-tabs";
55

6-
import { cn } from "@comp/ui/cn";
6+
import { cn } from "../utils";
77

88
function Tabs({
99
className,

0 commit comments

Comments
 (0)