a chat under the lists, and the skill that makes it worth having
the layout gains a third node across the bottom, a third of the height. a conversation reads badly in a narrow column and the two lists do not, so the chat gets width rather than a column of its own. it is officerdev/chat, the platform's own panel, not a simplified one of ours. seedAppRegistry merges the platform's panels and every plugin's into one registry, so naming it is all it takes — and a second chat maintained here would be the one that falls behind. the skill is deliberately NOT scoped to these routes. that was considered and dropped once it was clear what a skill costs: compileSkills emits a name, a description and a path, and the body is only read if the agent decides it is relevant. two lines in every conversation. scoping would have meant a platform change to buy back nothing. (affordances are the opposite — loaded in full, every conversation — so this plugin ships none. by docs/affordances.md's own test the 404 quirk does not qualify: it CAN be fixed instead, and the platform route already fixes it.) what the skill carries: the routes, that meta.nginx_online is the field for "is it down", that renewal is at 30 days so under 14 is a real failure worth raising unprompted and nothing else will raise it, that the 404 has already been interpreted before it reaches you, and that disabling a host takes a domain off the internet so it is confirmed and never inferred. plus what is not built, so it does not get offered. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
+31
-5
@@ -1,13 +1,39 @@
|
||||
import type { LayoutNode } from 'officerdev';
|
||||
|
||||
// Hosts wide, certificates beside it. Certificates is a glance rather than a workspace — you look at it
|
||||
// when something is red — so it gets the narrower half.
|
||||
// Hosts wide, certificates beside it, a chat across the bottom.
|
||||
//
|
||||
// ── Why the chat panel is the platform's and not one of ours ──
|
||||
//
|
||||
// `officerdev/chat` is a panel app in the shared registry — `seedAppRegistry` merges the platform's panels
|
||||
// and every plugin's into ONE registry, so naming it here is all it takes. Shipping a second, simpler chat
|
||||
// from this plugin would mean maintaining a second chat, and the first one to fall behind would be ours.
|
||||
//
|
||||
// It gets a third of the height rather than a column, because a conversation reads badly in a narrow
|
||||
// column and the two lists do not: they are scannable at any width, and a chat is not.
|
||||
//
|
||||
// ── What makes the chat useful HERE ──
|
||||
//
|
||||
// Nothing in this layout. The agent gets the `Proxy Manager` skill the same way it gets every other one —
|
||||
// from this plugin's `skills/` directory, offered in every conversation on the machine, costing two lines
|
||||
// until something actually needs it. A chat in this panel is an ordinary chat that happens to be sitting
|
||||
// underneath the thing it is being asked about.
|
||||
export const defaultLayout: LayoutNode = {
|
||||
type: 'group',
|
||||
id: 'proxy-manager-root',
|
||||
direction: 'horizontal',
|
||||
direction: 'vertical',
|
||||
children: [
|
||||
{ node: { type: 'panel', id: 'proxy-manager-hosts', appType: 'proxy-manager-hosts' }, size: 62 },
|
||||
{ node: { type: 'panel', id: 'proxy-manager-certificates', appType: 'proxy-manager-certificates' }, size: 38 },
|
||||
{
|
||||
node: {
|
||||
type: 'group',
|
||||
id: 'proxy-manager-lists',
|
||||
direction: 'horizontal',
|
||||
children: [
|
||||
{ node: { type: 'panel', id: 'proxy-manager-hosts', appType: 'proxy-manager-hosts' }, size: 62 },
|
||||
{ node: { type: 'panel', id: 'proxy-manager-certificates', appType: 'proxy-manager-certificates' }, size: 38 },
|
||||
],
|
||||
},
|
||||
size: 66,
|
||||
},
|
||||
{ node: { type: 'panel', id: 'proxy-manager-chat', appType: 'officerdev/chat' }, size: 34 },
|
||||
],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user