import type { PluginManifest } from '@@/plugins/manifest';

// The reference plugin. Not a fixture — this is what a plugin author reads first, and it is deliberately
// the smallest thing that is still a real one: a manifest and one route.
//
// Everything structural is convention, so this directory IS the documentation:
//
//   manifest.ts        you are here — only what a directory listing cannot say
//   api/router.ts      exports `router`; mounted at /api/example
//   db/schema.ts       tables, if it had any (every name prefixed `example_`)
//   sidecar/index.ts   a process, if it needed one (.mjs instead means node)
//   web/Router.tsx     a frontend, if it had one
//
// `appName` is not declared anywhere: it is the directory name, so the id cannot disagree with where the
// code sits.
export const manifest: PluginManifest = {
  publisher: 'officerdev',
  version: '1.0.0',
  platform: '>=1.0.0',

  label: 'Example',
  summary: 'The reference plugin — one route, nothing else',
  icon: 'Puzzle',
  color: '#94a3b8',

  // One permission gating the whole surface. `ownerOnly: false` means a role can be granted it — which is
  // the interesting case, because it is the one the permission gate actually has to resolve.
  permissions: [
    {
      key: 'example',
      label: 'Example',
      description: 'The reference plugin',
    },
  ],
};
