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
108 lines • 4.04 kB
TypeScript
/**
* Deployment Registration
*
* Scans deployed agent and skill directories, extracts metadata from frontmatter,
* and registers them in the extension registry for discovery.
*
* @implements #56, #57
* @architecture @.aiwg/architecture/unified-extension-schema.md
* @tests @test/unit/extensions/deployment-registration.test.ts
*/
import type { Extension } from './types.js';
import type { ExtensionRegistry } from './registry.js';
/**
* Registration options
*/
export interface RegistrationOptions {
/** Path to deployed agents directory */
agentsPath?: string;
/** Path, or paths, to deployed skills directories */
skillsPath?: string | string[];
/** Path to deployed commands directory */
commandsPath?: string;
/** Path to deployed rules directory */
rulesPath?: string;
/**
* Path to deployed behaviors directory.
* For OpenClaw: ~/.openclaw/behaviors/ (native).
* For Claude Code: .claude/hooks/ (emulated).
* Empty string means behaviors are aggregated (e.g., Warp's WARP.md) or not supported.
*
* @implements #609
*/
behaviorsPath?: string;
/** Provider platform name */
provider: string;
/** Working directory for relative path resolution */
cwd?: string;
}
/**
* Scan deployed agents directory
*
* Reads agent markdown files from the deployed directory and creates Extension
* objects with metadata extracted from frontmatter.
*
* @param agentsPath - Path to .claude/agents or equivalent
* @param provider - Provider platform name
* @param cwd - Working directory for relative path resolution
* @returns Array of agent extensions
*/
export declare function scanDeployedAgents(agentsPath: string, provider: string, cwd?: string): Promise<Extension[]>;
/**
* Scan deployed skills directory
*
* Reads skill directories from the deployed directory and creates Extension
* objects with metadata extracted from skill.md files.
*
* @param skillsPath - Path to .claude/skills or equivalent
* @param provider - Provider platform name
* @param cwd - Working directory for relative path resolution
* @returns Array of skill extensions
*/
export declare function scanDeployedSkills(skillsPath: string, provider: string, cwd?: string): Promise<Extension[]>;
/**
* Scan deployed behaviors directory
*
* Reads behavior directories from the deployed path and creates Extension objects
* with metadata extracted from BEHAVIOR.md frontmatter.
*
* Behaviors are directories containing a BEHAVIOR.md file and optionally a scripts/
* subdirectory. On OpenClaw this is the native format; on other providers behaviors
* are emulated via hook wrappers or session injection.
*
* @param behaviorsPath - Path to deployed behaviors directory (e.g., ~/.openclaw/behaviors/)
* @param provider - Provider platform name
* @param cwd - Working directory for relative path resolution
* @returns Array of behavior extensions
*
* @implements #609
*/
export declare function scanDeployedBehaviors(behaviorsPath: string, provider: string, cwd?: string): Promise<Extension[]>;
/**
* Register deployed extensions in the registry
*
* Scans deployed agent, skill, and behavior directories, creates Extension objects,
* and registers them in the provided registry.
*
* @param registry - Extension registry to populate
* @param options - Registration options
*
* @example
* ```typescript
* import { getRegistry } from './registry.js';
* import { registerDeployedExtensions } from './deployment-registration.js';
*
* const registry = getRegistry();
* await registerDeployedExtensions(registry, {
* agentsPath: '.claude/agents',
* skillsPath: '.claude/skills',
* provider: 'claude',
* });
*
* // Now list all deployed agents
* const agents = registry.getByType('agent');
* console.log(`Deployed ${agents.length} agents`);
* ```
*/
export declare function registerDeployedExtensions(registry: ExtensionRegistry, options: RegistrationOptions): Promise<void>;
//# sourceMappingURL=deployment-registration.d.ts.map