Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/appicons/io.pilot.primitive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 9 additions & 5 deletions scripts/gen-apps.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const CATEGORIES = [
{ id: 'infra', name: 'Infrastructure', blurb: 'Containers, microVMs, and deploys — the compute layer for agents.', hue: 30 },
{ id: 'security', name: 'Security', blurb: 'Guardrails and firewalls for agents and their inputs.', hue: 5 },
{ id: 'finance', name: 'Finance & Payments', blurb: 'Settle value on-overlay and read the markets.', hue: 155 },
{ id: 'comms', name: 'Communications', blurb: 'Give an agent its own phone number — voice, SMS/iMessage, and threaded conversations.', hue: 315 },
{ id: 'comms', name: 'Communications', blurb: 'Give an agent its own phone number or email inbox — voice, SMS/iMessage, email, and threaded conversations.', hue: 315 },
];
const CAT_HUE = Object.fromEntries(CATEGORIES.map((c) => [c.id, c.hue]));

Expand All @@ -38,7 +38,7 @@ const CATMAP = {
'io.pilot.smol': 'infra', 'io.pilot.miren': 'infra', 'io.pilot.docker': 'infra',
'io.pilot.aegis': 'security', 'io.pilot.didit': 'security',
'io.pilot.slipstream': 'finance', 'io.pilot.wallet': 'finance',
'io.pilot.agentphone': 'comms',
'io.pilot.agentphone': 'comms', 'io.pilot.primitive': 'comms',
};

// ---------- icons: brand mark (Simple Icons), line glyph (Lucide), or real logo image ----------
Expand All @@ -63,6 +63,7 @@ const ICON_MAP = {
'io.pilot.bowmark': { image: 'png', fit: 'cover', bg: '#0b0b0a' },
'io.pilot.orthogonal': { image: 'png', fit: 'cover', bg: '#e3e6df' },
'io.pilot.agentphone': { image: 'png', fit: 'contain', bg: '#26B65A' },
'io.pilot.primitive': { image: 'png', fit: 'cover', bg: '#111110' },
};

function relLum(hex) {
Expand All @@ -88,7 +89,7 @@ function iconFor(id, hue) {

// ---------- presentation config ----------
const APP_IDS = [
'io.pilot.agentphone',
'io.pilot.primitive', 'io.pilot.agentphone',
'io.pilot.postgres', 'io.pilot.duckdb', 'io.pilot.sqlite', 'io.pilot.mysql', 'io.pilot.redis', 'io.pilot.sixtyfour',
'io.pilot.cosift', 'io.telepat.ideon-free', 'io.pilot.plainweb', 'io.pilot.otto',
'io.pilot.smol', 'io.pilot.miren', 'io.pilot.docker', 'io.pilot.aegis',
Expand All @@ -112,7 +113,7 @@ function build(id) {
const o = overrides[id] || {};
const cat = CATMAP[id];
const platforms = o.platforms || (LINUX_ONLY.has(id) ? ['linux-arm64', 'linux-amd64'] : ALL_PLATFORMS);
const methods = (methodsMap[id] || []).map((m) => ({ name: m.name, summary: m.summary || null }));
const methods = (methodsMap[id] || []).map((m) => ({ name: m.name, summary: m.summary || null, example: m.example || null, gated: m.gated || null }));
return {
id,
name: o.name || id,
Expand Down Expand Up @@ -142,14 +143,16 @@ function build(id) {
runtimes: o.runtimes || ['go'],
publishedAt: o.publishedAt ? String(o.publishedAt).slice(0, 10) : null,
updatedAt: o.publishedAt ? String(o.publishedAt).slice(0, 10) : null,
limits: o.limits || null,
};
}

const apps = APP_IDS.map(build);

const banner = `// AUTO-GENERATED by scripts/gen-apps.mjs from authoritative catalogue snapshots\n// (src/data/app-overrides.json + app-methods.json). Do not edit by hand.\n// No ratings or install counts — those are not published by the catalogue.\n`;
const body = `${banner}
export interface AppMethod { name: string; summary: string | null; }
export interface AppMethod { name: string; summary: string | null; example: string | null; gated: string | null; }
export interface AppLimit { label: string; value: string; }
export interface AppChangelog { version: string; date?: string | null; notes: string[]; }
export interface AppBundle { platform: string; bytes: number | null; }
export interface AppDependency { id: string; reason: string; optional?: boolean; }
Expand All @@ -165,6 +168,7 @@ export interface App {
featured: boolean; real: boolean; inCatalogue: boolean;
icon: AppIcon; minPilotVersion: string; runtimes: string[];
publishedAt: string | null; updatedAt: string | null;
limits: AppLimit[] | null;
}
export interface Category { id: string; name: string; blurb: string; hue: number; }

Expand Down
Loading
Loading