ring/platforms/opencode/plugin/index.ts
Gandalf f85aa61440
feat: add OpenCode platform integration (consolidate ring-for-opencode)
Move OpenCode runtime plugin and installer into Ring monorepo under platforms/opencode/.
The installer reads skills, agents, and commands directly from the Ring monorepo's
canonical directories (default/, dev-team/, pm-team/, etc.) — zero asset duplication.

What's included:
- installer.sh: reads from Ring dirs, applies frontmatter/tool transforms, installs to ~/.config/opencode/
- plugin/: TypeScript runtime (RingUnifiedPlugin) with hooks, lifecycle, loaders
- src/: CLI (doctor, config-manager)
- prompts/: session-start and context-injection templates
- standards/: coding standards (from dev-team/docs/)
- ring.jsonc: default config with full 86-skill/35-agent/33-command inventory

What's NOT included (intentionally):
- assets/ directory: eliminated, content comes from Ring monorepo
- scripts/codereview/: eliminated, replaced by mithril
- using-ring-opencode skill: uses canonical using-ring instead

Transforms applied by installer:
- Agent: type→mode, strip version/changelog/output_schema/input_schema
- Skill: keep name+description frontmatter, body unchanged
- Command: strip argument-hint (unsupported by OpenCode)
- All: normalize tool names (Bash→bash, Read→read, etc.)
- All: strip Model Requirement sections from agents

Replaces: LerianStudio/ring-for-opencode repository
Generated-by: Gandalf
AI-Model: claude-opus-4
2026-03-07 22:46:47 -03:00

28 lines
911 B
TypeScript

/**
* Ring OpenCode Plugin
*
* This module exports ONLY the plugin function for OpenCode.
*
* IMPORTANT: OpenCode's plugin loader iterates over ALL exports and calls
* each one as a function. Any non-function export will crash the loader with:
* "TypeError: fn3 is not a function"
*
* Therefore, this file MUST only export:
* - RingUnifiedPlugin (named export)
* - default export
*
* For internal APIs (hooks, config, utils, etc.), import directly from
* the submodules:
* - "./hooks/index.js"
* - "./config/index.js"
* - "./utils/state.js"
* - "./loaders/index.js"
* - "./tools/index.js"
* - "./lifecycle/index.js"
*/
// =============================================================================
// PLUGIN EXPORTS ONLY
// =============================================================================
export { RingUnifiedPlugin, RingUnifiedPlugin as default } from "./ring-unified.js"