first dated version. plugins were all sitting on 1.0.0, which said nothing about when a build was made or which of two copies is newer — the platform already uses YYYY.MM.DD.NN and this follows it. the version lives in manifest.ts because a plugin has no package.json; that is the field the marketplace publishes and the installer compares. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
49 lines
2.3 KiB
TypeScript
49 lines
2.3 KiB
TypeScript
import type { PluginManifest } from '@@/plugins/manifest';
|
||
|
||
// Atelier — image generation as a service: a provider-shaped API over OpenAI's image endpoints,
|
||
// storing what it makes so every image has a durable reference inside Officer.
|
||
//
|
||
// Extracted 2026-08-20 from a standalone server (~/officer-dev/dockers/officer-atelier) that predates
|
||
// the plugin system. See PLUGIN.md for what moved, what did not, and why — most notably that the
|
||
// `atelier` Postgres database stays separate rather than folding into officer_db (both `collections`
|
||
// and `provider_settings` had rows on the machine this was extracted from), and that generated images
|
||
// are now served through an authenticated route instead of an unauthenticated `PUBLIC_URL`.
|
||
//
|
||
// api/router.ts a thin auth-gated proxy — no Atelier knowledge, and it must never grow app logic
|
||
// sidecar/ the whole image-generation contract: providers, the queue, the database
|
||
// web/ three panels — Generate, Gallery, Collections — and a layout
|
||
//
|
||
// Providers (which adapter, which model, whose key) is NOT a panel — it moved to
|
||
// Settings → Integrations → Atelier, per PLUGIN.md's "Providers as a settings screen" decision.
|
||
export const manifest: PluginManifest = {
|
||
publisher: 'officerdev',
|
||
version: '2026.08.27.01',
|
||
platform: '>=1.0.0',
|
||
|
||
label: 'Atelier',
|
||
summary: 'Image generation — prompt, gallery, collections, backed by OpenAI’s image models',
|
||
/** image generation you play with; not a work tool. */
|
||
tags: ['Personal', 'Fun'],
|
||
icon: 'Palette',
|
||
color: '#f59e0b',
|
||
|
||
// `sharp` measures the width, height and alpha channel of a written image (sidecar/generations/
|
||
// inspect.ts) — load-bearing, not incidental: it is how a `background: transparent` request that
|
||
// silently produced an opaque image gets caught.
|
||
//
|
||
// A range, not a pin. Every plugin's declarations merge into one shared install at
|
||
// `plugins/node_modules/`, so the next plugin that wants sharp shares this copy rather than adding
|
||
// another 50 MB of platform binaries. See src/servers/plugins/npm-deps.ts.
|
||
npmDependencies: {
|
||
sharp: '^0.33.5',
|
||
},
|
||
|
||
permissions: [
|
||
{
|
||
key: 'atelier',
|
||
label: 'Atelier',
|
||
description: 'Image generation: prompts, gallery, collections and provider configuration',
|
||
},
|
||
],
|
||
};
|