ChatPanelWrapper, not EmbeddableChat — one level up, and the session persistence, the agent identity bar, the spawned-by bar and resume-the-newest all come with it. mounting the composer directly meant reimplementing those or going without. and a header: the conversation picker, scoped to this plugin's own directory, with new chat, inline rename and delete. none of it is new — it is what a dashboard's chat panel has always had, pointed at a context instead of a path. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
import { MessageSquare, Route, ShieldCheck } from 'lucide-react';
|
|
import type { AppRegistryMeta } from 'officerdev';
|
|
import { HostsPanel } from './HostsPanel';
|
|
import { CertificatesPanel } from './CertificatesPanel';
|
|
import { ChatPanel, ChatPanelHeader } from './ChatPanel';
|
|
|
|
// Three panels. Hosts is what the plugin is for; certificates is the thing that quietly breaks and is
|
|
// worth seeing beside it rather than a click away; chat is where you ask about either of them.
|
|
//
|
|
// The chat panel has to be OURS even though the chat inside it is the platform's — `PluginScreen` pins the
|
|
// layout to `allowed = panels.map(p => p.key)`, so naming `officerdev/chat` in layout.ts renders the
|
|
// fallback instead. See ChatPanel.tsx.
|
|
//
|
|
// `availableOnPanel: false` — these belong to this plugin's screen, not to the generic panel picker.
|
|
export const appRegistryMetas: AppRegistryMeta[] = [
|
|
{ key: 'proxy-manager-hosts', name: 'Hosts', icon: Route, component: HostsPanel, availableOnPanel: false },
|
|
{
|
|
key: 'proxy-manager-certificates',
|
|
name: 'Certificates',
|
|
icon: ShieldCheck,
|
|
component: CertificatesPanel,
|
|
availableOnPanel: false,
|
|
},
|
|
{
|
|
key: 'proxy-manager-chat',
|
|
name: 'Chat',
|
|
icon: MessageSquare,
|
|
component: ChatPanel,
|
|
// The conversation picker, scoped to this plugin's own chat directory.
|
|
header: ChatPanelHeader,
|
|
availableOnPanel: false,
|
|
},
|
|
];
|