diff --git a/src/layouts/AdminLayout.jsx b/src/layouts/AdminLayout.jsx index e589c8f..1332864 100644 --- a/src/layouts/AdminLayout.jsx +++ b/src/layouts/AdminLayout.jsx @@ -4,7 +4,7 @@ import { motion } from 'framer-motion'; import { Activity, Bell, Bike, Car, ChevronDown, Coins, FileSpreadsheet, FileText, ListTodo, LogOut, Menu, Search, Settings, Shield, - ShieldAlert, User, UserCheck, Users, Warehouse, + ShieldAlert, User, UserCheck, Warehouse, } from 'lucide-react'; import { cn } from '@/lib/utils'; import { DOORMILE_MARK_URL } from '@/assets/brand'; diff --git a/src/pages/doormile/appUsers/AppUsers.jsx b/src/pages/doormile/appUsers/AppUsers.jsx index 61c4763..5ab1f8f 100644 --- a/src/pages/doormile/appUsers/AppUsers.jsx +++ b/src/pages/doormile/appUsers/AppUsers.jsx @@ -2,7 +2,7 @@ import React, { useMemo, useState } from 'react'; import { Pencil, Plus, ShieldCheck, Trash2, Users } from 'lucide-react'; import { Avatar, Button, ConfirmModal, DataTable, EmptyState, Field, Grid, IconButton, Input, - KpiCard, Modal, PageHeader, Select, SelectContent, SelectItem, SelectTrigger, + KpiCard, Modal, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar'; diff --git a/src/pages/doormile/bookings/Bookings.jsx b/src/pages/doormile/bookings/Bookings.jsx index 419cb4a..dd1aeb1 100644 --- a/src/pages/doormile/bookings/Bookings.jsx +++ b/src/pages/doormile/bookings/Bookings.jsx @@ -8,7 +8,7 @@ import { import { Alert, Button, DataTable, Drawer, EmptyState, Grid, KpiCard, - Modal, PageHeader, Stack, StatusBadge, Surface, Tabs, + Modal, Stack, StatusBadge, Surface, Tabs, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar'; diff --git a/src/pages/doormile/clients/Tenants.jsx b/src/pages/doormile/clients/Tenants.jsx index 0397c5c..e9da769 100644 --- a/src/pages/doormile/clients/Tenants.jsx +++ b/src/pages/doormile/clients/Tenants.jsx @@ -6,7 +6,7 @@ import { } from 'lucide-react'; import { Button, DataTable, Drawer, EmptyState, Field, Grid, IconButton, Input, KpiCard, - Modal, PageHeader, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, + Modal, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, Surface, Switch, Tabs, } from '@/components/ds'; import { diff --git a/src/pages/doormile/competitiveIntel/CompetitiveIntel.jsx b/src/pages/doormile/competitiveIntel/CompetitiveIntel.jsx index 667a896..5e7b935 100644 --- a/src/pages/doormile/competitiveIntel/CompetitiveIntel.jsx +++ b/src/pages/doormile/competitiveIntel/CompetitiveIntel.jsx @@ -1,8 +1,7 @@ import React, { useState } from 'react'; import { Building2, Pencil, Plus, Radar, Trash2 } from 'lucide-react'; import { - Button, ConfirmModal, DataTable, EmptyState, Field, IconButton, Input, Modal, - PageHeader, Pagination, Stack, Surface, Tabs, + Button, ConfirmModal, DataTable, EmptyState, Field, IconButton, Input, Modal, Pagination, Stack, Surface, Tabs, } from '@/components/ds'; import { useCarrierPricing, useCompetitorBranches, useCreateCarrierPricing, diff --git a/src/pages/doormile/customers/Customers.jsx b/src/pages/doormile/customers/Customers.jsx index 4545f50..b902a02 100644 --- a/src/pages/doormile/customers/Customers.jsx +++ b/src/pages/doormile/customers/Customers.jsx @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { Mail, Package, Pencil, Phone, Plus, Users } from 'lucide-react'; import { Avatar, Button, DataTable, EmptyState, Field, Grid, IconButton, Input, KpiCard, - Modal, PageHeader, Stack, + Modal, Stack, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar'; import { useTenantCustomers, useUpdateTenantCustomer } from '@/lib/doormileHooks'; diff --git a/src/pages/doormile/deliveries/Deliveries.jsx b/src/pages/doormile/deliveries/Deliveries.jsx index dea9c33..c078e4e 100644 --- a/src/pages/doormile/deliveries/Deliveries.jsx +++ b/src/pages/doormile/deliveries/Deliveries.jsx @@ -2,8 +2,7 @@ import React, { useEffect, useMemo, useState } from 'react'; import dayjs from 'dayjs'; import { Ban, Bell, Bike, Clock, FileSpreadsheet, PackageSearch, Truck } from 'lucide-react'; import { - Alert, Button, DataTable, DatePicker, Drawer, EmptyState, Field, IconButton, - PageHeader, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Modal, + Alert, Button, DataTable, DatePicker, Drawer, EmptyState, Field, IconButton, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Modal, Stack, StatusBadge, Surface, Tabs, Textarea, ZoneSelector, } from '@/components/ds'; import { diff --git a/src/pages/doormile/exceptions/Exceptions.jsx b/src/pages/doormile/exceptions/Exceptions.jsx index 45234b7..5f5b991 100644 --- a/src/pages/doormile/exceptions/Exceptions.jsx +++ b/src/pages/doormile/exceptions/Exceptions.jsx @@ -1,7 +1,7 @@ import React, { useMemo, useState } from 'react'; import { AlertTriangle, CheckCircle2, ClipboardList, Flame, Plus } from 'lucide-react'; import { - Button, DataTable, EmptyState, Field, Grid, Input, KpiCard, Modal, PageHeader, + Button, DataTable, EmptyState, Field, Grid, Input, KpiCard, Modal, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, Textarea, } from '@/components/ds'; diff --git a/src/pages/doormile/home/Home.jsx b/src/pages/doormile/home/Home.jsx index 59f800b..4543761 100644 --- a/src/pages/doormile/home/Home.jsx +++ b/src/pages/doormile/home/Home.jsx @@ -2008,42 +2008,23 @@ export default function Home() { - {/* All Agents. + {/* "All Agents" was here, and is gone with the Agent Studio it + pointed at. - This used to ask the assistant to "Summarize status across all - 9 specialized agents". Nothing in the intent catalogue matches - the word "agents", so every click landed on the honest - "I could not answer that from live data" fallback — a control - that reliably fails, on the page where an operator forms their - impression of whether the AI works at all. + Its history in one line: it originally asked the assistant to + "Summarize status across all 9 specialized agents", which no + intent matches, so every click produced "I could not answer + that from live data". It was then repointed at Settings → + Skills & Tools, which turned out to be a localStorage-only + drawing and has now been removed too. - It could not have worked. Agent telemetry lives in AI_engine's - command centre (FastAPI, port 8600) and the console has no - base URL for it, no env var, and nothing deployed to point at; - the console itself holds no agent state to summarise. The one - thing NOT done here is synthesising a number from console - data — see the note on the fallback branch above, where a - previous version forged a sourceCalls entry claiming - "46 milers scanned" for a call that was never made. - - So it now opens the page that really is about agents. When the - audit tables in docs/agent-platform-plan.md §11 land, agent - status becomes an ordinary query and this can become a - question again. */} - -
- - - AI - -
- - All Agents - - + There is no third target. The console holds no agent state: + telemetry lives in AI_engine's command centre on port 8600, + which nothing here is configured to reach. Rather than point a + button at a third thing that cannot answer, it is out until + there is something real behind it — the audit tables in + docs/agent-platform-plan.md §11, after which agent status is + an ordinary query against our own database. */} diff --git a/src/pages/doormile/hubs/Hubs.jsx b/src/pages/doormile/hubs/Hubs.jsx index 9cc1293..16c2c39 100644 --- a/src/pages/doormile/hubs/Hubs.jsx +++ b/src/pages/doormile/hubs/Hubs.jsx @@ -2,7 +2,7 @@ import React, { useMemo, useState } from 'react'; import { CheckCircle2, MapPin, Pencil, Plus, Trash2, Warehouse } from 'lucide-react'; import { Button, ConfirmModal, DataTable, EmptyState, Field, Grid, IconButton, Input, KpiCard, - Modal, PageHeader, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, + Modal, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar'; diff --git a/src/pages/doormile/orders/Orders.jsx b/src/pages/doormile/orders/Orders.jsx index bb689c3..cceb77e 100644 --- a/src/pages/doormile/orders/Orders.jsx +++ b/src/pages/doormile/orders/Orders.jsx @@ -3,7 +3,7 @@ import { useNavigate, useSearchParams } from 'react-router-dom'; import { motion } from 'framer-motion'; import dayjs from 'dayjs'; import { Ban, Bike, FileSpreadsheet, MapPin, Package, Plus, Upload, UserCheck } from 'lucide-react'; -import { Button, ConfirmModal, DataTable, DatePicker, EmptyState, Modal, PageHeader, SearchInput, Stack, StatusBadge, Tabs, ZoneSelector } from '@/components/ds'; +import { Button, ConfirmModal, DataTable, DatePicker, EmptyState, Modal, SearchInput, Stack, StatusBadge, Tabs, ZoneSelector } from '@/components/ds'; import { useBulkCancelBookings, useCustomers, useFlowAnchors, useRiderOptions } from '@/lib/doormileHooks'; import { useZone } from '@/lib/ZoneContext'; import { assignMilerToBooking, notifyMiler } from '@/api/doormile/endpoints'; diff --git a/src/pages/doormile/orders/OrdersPreview.jsx b/src/pages/doormile/orders/OrdersPreview.jsx index 2599140..dff66f2 100644 --- a/src/pages/doormile/orders/OrdersPreview.jsx +++ b/src/pages/doormile/orders/OrdersPreview.jsx @@ -4,7 +4,7 @@ import { useMutation } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query'; import { ArrowLeft, Bike, Package, Send } from 'lucide-react'; import { - Button, DataTable, EmptyState, Grid, KpiCard, PageHeader, Select, SelectContent, + Button, DataTable, EmptyState, Grid, KpiCard, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, } from '@/components/ds'; import { finalCreatedeliveries, notifyRider } from '@/api/doormile'; diff --git a/src/pages/doormile/pricing/Pricing.jsx b/src/pages/doormile/pricing/Pricing.jsx index 29d5488..717f88f 100644 --- a/src/pages/doormile/pricing/Pricing.jsx +++ b/src/pages/doormile/pricing/Pricing.jsx @@ -2,7 +2,7 @@ import React, { useMemo, useState } from 'react'; import { Building2, Calculator, IndianRupee, MapPin, Pencil, Plus, Tag, Trash2 } from 'lucide-react'; import { Button, ConfirmModal, DataTable, EmptyState, Field, Grid, IconButton, Input, KpiCard, - Modal, PageHeader, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, + Modal, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, Surface, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar'; diff --git a/src/pages/doormile/reports/OperationalReportCards.jsx b/src/pages/doormile/reports/OperationalReportCards.jsx index 0cc4a41..196cee6 100644 --- a/src/pages/doormile/reports/OperationalReportCards.jsx +++ b/src/pages/doormile/reports/OperationalReportCards.jsx @@ -9,7 +9,6 @@ import { FileSpreadsheet, Calendar, Loader2, - Check, } from 'lucide-react'; import { cn } from '@/lib/utils'; import { diff --git a/src/pages/doormile/riders/Riders.jsx b/src/pages/doormile/riders/Riders.jsx index 7193bd4..77efd1f 100644 --- a/src/pages/doormile/riders/Riders.jsx +++ b/src/pages/doormile/riders/Riders.jsx @@ -9,7 +9,7 @@ import { } from 'lucide-react'; import { Avatar, Button, ConfirmModal, DataTable, Drawer, EmptyState, Field, Grid, IconButton, - Input, KpiCard, Modal, PageHeader, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, + Input, KpiCard, Modal, SearchInput, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, Surface, Tabs, Textarea, ZoneSelector, } from '@/components/ds'; import { diff --git a/src/pages/doormile/settings/Settings.jsx b/src/pages/doormile/settings/Settings.jsx index 1fd0cbf..c1100e1 100644 --- a/src/pages/doormile/settings/Settings.jsx +++ b/src/pages/doormile/settings/Settings.jsx @@ -1,28 +1,44 @@ import React, { useState, useEffect } from 'react'; -import { useSearchParams, useNavigate } from 'react-router-dom'; +import { useSearchParams } from 'react-router-dom'; import { motion, AnimatePresence } from 'framer-motion'; import dayjs from 'dayjs'; -import { TrendingUp, Users, Plus, Sparkles } from 'lucide-react'; +import { TrendingUp, Users, Sparkles } from 'lucide-react'; import { cn } from '@/lib/utils'; -import { Button, Input } from '@/components/ds'; +import { Input } from '@/components/ds'; import Customers from '@/pages/doormile/customers/Customers'; import Profitability from '@/pages/doormile/reports/Profitability'; import AgentStudio from './agentStudio/AgentStudio'; +// ⚠️ Skills & Tools (Agent Studio) is a PREVIEW. It does not configure +// anything yet. +// +// It reads and writes browser localStorage and nothing else: no endpoint, no +// table, and no importer outside its own folder. A skill added here exists on +// one machine, in one browser, and is invisible to colleagues and to the +// assistant. The Home assistant runs on the regex catalogue in +// lib/assistant/intents.js and has never heard of a "skill". +// +// It is kept deliberately — the shape is right and it is what Phase 6 of +// docs/agent-platform-plan.md wires to the real tool registry in +// doormile_backend/internal/ai/tools. Until then, do not read a change made +// here as a change to the agent's behaviour. +// +// It is NOT the default tab. Landing on a section that does nothing is how an +// operator concludes the AI is broken; Profitability leads instead. const TABS = [ - { id: 'skills', label: 'Skills & Tools', icon: Sparkles }, { id: 'profitability', label: 'Profitability', icon: TrendingUp }, { id: 'customers', label: 'Customers', icon: Users }, + { id: 'skills', label: 'Skills & Tools', icon: Sparkles }, ]; export default function Settings() { const [searchParams, setSearchParams] = useSearchParams(); - const navigate = useNavigate(); const tabParam = searchParams.get('tab'); - // Default to 'skills' or respect ?tab= + // Default to the first tab, or respect ?tab=. A stale ?tab=skills link now + // falls through to this default rather than rendering nothing. const [activeTab, setActiveTab] = useState( - tabParam && TABS.some((t) => t.id === tabParam) ? tabParam : 'skills' + tabParam && TABS.some((t) => t.id === tabParam) ? tabParam : TABS[0].id ); // Maintain shared date for Profitability @@ -89,6 +105,11 @@ export default function Settings() { e.target.value && setReportDate(e.target.value)} aria-label="Report date" className="w-44 bg-white shadow-xs" diff --git a/src/pages/doormile/settings/agentStudio/AgentConfigAndInsights.jsx b/src/pages/doormile/settings/agentStudio/AgentConfigAndInsights.jsx index c5f61e5..444c9f1 100644 --- a/src/pages/doormile/settings/agentStudio/AgentConfigAndInsights.jsx +++ b/src/pages/doormile/settings/agentStudio/AgentConfigAndInsights.jsx @@ -3,9 +3,6 @@ import { Sliders, BarChart3, ShieldCheck, - CheckCircle2, - Clock, - Zap, TrendingUp, Cpu, Save, diff --git a/src/pages/doormile/settings/agentStudio/AgentPlayground.jsx b/src/pages/doormile/settings/agentStudio/AgentPlayground.jsx index 0ad66ba..b915dda 100644 --- a/src/pages/doormile/settings/agentStudio/AgentPlayground.jsx +++ b/src/pages/doormile/settings/agentStudio/AgentPlayground.jsx @@ -1,16 +1,13 @@ import React, { useState, useEffect } from 'react'; import { Sparkles, - Play, Wrench, Bot, Send, CheckCircle2, Terminal, RotateCcw, - Layers, } from 'lucide-react'; -import { cn } from '@/lib/utils'; export default function AgentPlayground({ activeAgent, diff --git a/src/pages/doormile/settings/agentStudio/AgentStudio.jsx b/src/pages/doormile/settings/agentStudio/AgentStudio.jsx index d8a4767..bee3383 100644 --- a/src/pages/doormile/settings/agentStudio/AgentStudio.jsx +++ b/src/pages/doormile/settings/agentStudio/AgentStudio.jsx @@ -1,12 +1,10 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState } from 'react'; import { Sliders, Zap, Wrench, Bot, BarChart3, - ExternalLink, - Sparkles, } from 'lucide-react'; import { cn } from '@/lib/utils'; import { diff --git a/src/pages/doormile/settings/agentStudio/CreateSkillModal.jsx b/src/pages/doormile/settings/agentStudio/CreateSkillModal.jsx index f399e41..1dd320b 100644 --- a/src/pages/doormile/settings/agentStudio/CreateSkillModal.jsx +++ b/src/pages/doormile/settings/agentStudio/CreateSkillModal.jsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { X, Plus, Sparkles, Layers, Wrench, Check } from 'lucide-react'; +import { X, Plus, Sparkles, Wrench, Check } from 'lucide-react'; import { cn } from '@/lib/utils'; const CATEGORIES = ['Authoring', 'Workforce', 'Logistics', 'Dispatch', 'Custom']; diff --git a/src/pages/doormile/settings/agentStudio/SkillDetailsDrawer.jsx b/src/pages/doormile/settings/agentStudio/SkillDetailsDrawer.jsx index 59ec0d4..c8651e4 100644 --- a/src/pages/doormile/settings/agentStudio/SkillDetailsDrawer.jsx +++ b/src/pages/doormile/settings/agentStudio/SkillDetailsDrawer.jsx @@ -5,10 +5,7 @@ import { Play, Layers, Wrench, - Check, - CheckCircle2, Code, - ShieldCheck, ChevronDown, ChevronRight, } from 'lucide-react'; diff --git a/src/pages/doormile/settings/agentStudio/ToolRegistryView.jsx b/src/pages/doormile/settings/agentStudio/ToolRegistryView.jsx index 4474441..f7a6e64 100644 --- a/src/pages/doormile/settings/agentStudio/ToolRegistryView.jsx +++ b/src/pages/doormile/settings/agentStudio/ToolRegistryView.jsx @@ -7,8 +7,6 @@ import { ShieldCheck, ChevronDown, ChevronRight, - Layers, - Plus, } from 'lucide-react'; import { cn } from '@/lib/utils'; diff --git a/src/pages/doormile/tripsheets/Tripsheets.jsx b/src/pages/doormile/tripsheets/Tripsheets.jsx index e22f724..77c9bf5 100644 --- a/src/pages/doormile/tripsheets/Tripsheets.jsx +++ b/src/pages/doormile/tripsheets/Tripsheets.jsx @@ -1,8 +1,7 @@ import React, { useMemo, useState } from 'react'; import { ArrowRight, ListPlus, PackageCheck, PlaneLanding, PlaneTakeoff, Plus, Truck } from 'lucide-react'; import { - Button, DataTable, EmptyState, Field, Grid, IconButton, Input, KpiCard, Modal, - PageHeader, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, + Button, DataTable, EmptyState, Field, Grid, IconButton, Input, KpiCard, Modal, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar'; diff --git a/src/pages/doormile/vehicles/Vehicles.jsx b/src/pages/doormile/vehicles/Vehicles.jsx index b26274e..b8dc5e7 100644 --- a/src/pages/doormile/vehicles/Vehicles.jsx +++ b/src/pages/doormile/vehicles/Vehicles.jsx @@ -2,7 +2,7 @@ import React, { useMemo, useState } from 'react'; import { BatteryLow, BatteryFull, Car, CheckCircle2, Pencil, Plus, Trash2 } from 'lucide-react'; import { Button, ConfirmModal, DataTable, EmptyState, Field, Grid, IconButton, Input, KpiCard, - Modal, PageHeader, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, + Modal, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Stack, StatusBadge, } from '@/components/ds'; import { ListToolbar } from '@/components/doormile/ListToolbar';