aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
72 lines • 2.76 kB
JavaScript
/**
* Optional Features Catalog
*
* AIWG ships several runtime-optional features whose dependencies may
* be installed separately. This catalog is the canonical mapping
* between **feature names** (operator vocabulary) and the **npm
* packages** that enable them.
*
* Consumed by:
* - `aiwg features` command (status / info / install / remove)
* - `aiwg doctor` (Optional Features section)
* - Runtime error messages (when a dynamic import fails, point at
* `aiwg features install <name>`)
*
* @implements #1219
*/
export const FEATURE_CATALOG = [
{
name: 'embeddings',
description: 'Vector embeddings for `aiwg discover` (semantic search beyond the keyword scorer)',
packages: ['@xenova/transformers', 'hnswlib-node'],
enables: [
'higher hit@K on natural-language queries that don\'t match trigger phrases',
'optional dense-rerank layer when sparse top-1 is ambiguous',
],
cost: '~150 MB — transformers runtime + libvips native binary, one-time download',
},
{
name: 'sqlite',
description: 'SQLite storage backend for memory / activity-log / kb subsystems',
packages: ['better-sqlite3'],
enables: [
'storage.config: backend=sqlite for any subsystem',
'transactional reads/writes against `.aiwg/storage/`',
],
cost: '~5 MB — native compile via node-gyp',
},
{
name: 'pty',
description: 'PTY bridge for daemon — pass-through interactive TUIs (Claude Code, Codex, etc.)',
packages: ['node-pty'],
enables: [
'aiwg daemon pty start / list / stop',
'daemon web UI for interactive Claude/Codex/etc sessions over WebSocket',
],
cost: '~2 MB — native compile via node-gyp',
},
{
name: 'webserver',
description: 'HTTP/WebSocket server for the daemon web UI and ralph-external bridge',
packages: ['hono', '@hono/node-server', 'ws'],
enables: [
'aiwg daemon serve',
'browser-based daemon UI',
'ralph-external WebSocket dispatch',
],
cost: '~3 MB — pure JS, no native deps',
},
];
/** Quick lookup by feature name. */
export function getFeature(name) {
return FEATURE_CATALOG.find(f => f.name === name) ?? null;
}
/** All feature names — useful for `--all` flags and CLI completion. */
export function listFeatureNames() {
return FEATURE_CATALOG.map(f => f.name);
}
/** Reverse lookup: given a package name, which feature does it belong to? */
export function featureForPackage(pkg) {
return FEATURE_CATALOG.find(f => f.packages.includes(pkg)) ?? null;
}
//# sourceMappingURL=catalog.js.map