feat: add OpenCode/Codex outputs and update changelog (#104)
* Add OpenCode converter coverage and specs * Add Codex target support and spec docs * Generate Codex command skills and refresh spec docs * Add global Codex install path * fix: harden plugin path loading and codex descriptions * feat: ensure codex agents block on convert/install * docs: clarify target branch usage for review * chore: prep npm package metadata and release notes * docs: mention opencode and codex in changelog * docs: update CLI usage and remove stale todos * feat: install from GitHub with global outputs
This commit is contained in:
88
src/types/claude.ts
Normal file
88
src/types/claude.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
export type ClaudeMcpServer = {
|
||||
type?: string
|
||||
command?: string
|
||||
args?: string[]
|
||||
url?: string
|
||||
env?: Record<string, string>
|
||||
headers?: Record<string, string>
|
||||
}
|
||||
|
||||
export type ClaudeManifest = {
|
||||
name: string
|
||||
version: string
|
||||
description?: string
|
||||
author?: {
|
||||
name?: string
|
||||
email?: string
|
||||
url?: string
|
||||
}
|
||||
keywords?: string[]
|
||||
agents?: string | string[]
|
||||
commands?: string | string[]
|
||||
skills?: string | string[]
|
||||
hooks?: string | string[] | ClaudeHooks
|
||||
mcpServers?: Record<string, ClaudeMcpServer> | string | string[]
|
||||
}
|
||||
|
||||
export type ClaudeAgent = {
|
||||
name: string
|
||||
description?: string
|
||||
capabilities?: string[]
|
||||
model?: string
|
||||
body: string
|
||||
sourcePath: string
|
||||
}
|
||||
|
||||
export type ClaudeCommand = {
|
||||
name: string
|
||||
description?: string
|
||||
argumentHint?: string
|
||||
model?: string
|
||||
allowedTools?: string[]
|
||||
body: string
|
||||
sourcePath: string
|
||||
}
|
||||
|
||||
export type ClaudeSkill = {
|
||||
name: string
|
||||
description?: string
|
||||
sourceDir: string
|
||||
skillPath: string
|
||||
}
|
||||
|
||||
export type ClaudePlugin = {
|
||||
root: string
|
||||
manifest: ClaudeManifest
|
||||
agents: ClaudeAgent[]
|
||||
commands: ClaudeCommand[]
|
||||
skills: ClaudeSkill[]
|
||||
hooks?: ClaudeHooks
|
||||
mcpServers?: Record<string, ClaudeMcpServer>
|
||||
}
|
||||
|
||||
export type ClaudeHookCommand = {
|
||||
type: "command"
|
||||
command: string
|
||||
timeout?: number
|
||||
}
|
||||
|
||||
export type ClaudeHookPrompt = {
|
||||
type: "prompt"
|
||||
prompt: string
|
||||
}
|
||||
|
||||
export type ClaudeHookAgent = {
|
||||
type: "agent"
|
||||
agent: string
|
||||
}
|
||||
|
||||
export type ClaudeHookEntry = ClaudeHookCommand | ClaudeHookPrompt | ClaudeHookAgent
|
||||
|
||||
export type ClaudeHookMatcher = {
|
||||
matcher: string
|
||||
hooks: ClaudeHookEntry[]
|
||||
}
|
||||
|
||||
export type ClaudeHooks = {
|
||||
hooks: Record<string, ClaudeHookMatcher[]>
|
||||
}
|
||||
23
src/types/codex.ts
Normal file
23
src/types/codex.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { ClaudeMcpServer } from "./claude"
|
||||
|
||||
export type CodexPrompt = {
|
||||
name: string
|
||||
content: string
|
||||
}
|
||||
|
||||
export type CodexSkillDir = {
|
||||
name: string
|
||||
sourceDir: string
|
||||
}
|
||||
|
||||
export type CodexGeneratedSkill = {
|
||||
name: string
|
||||
content: string
|
||||
}
|
||||
|
||||
export type CodexBundle = {
|
||||
prompts: CodexPrompt[]
|
||||
skillDirs: CodexSkillDir[]
|
||||
generatedSkills: CodexGeneratedSkill[]
|
||||
mcpServers?: Record<string, ClaudeMcpServer>
|
||||
}
|
||||
54
src/types/opencode.ts
Normal file
54
src/types/opencode.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
export type OpenCodePermission = "allow" | "ask" | "deny"
|
||||
|
||||
export type OpenCodeConfig = {
|
||||
$schema?: string
|
||||
model?: string
|
||||
default_agent?: string
|
||||
tools?: Record<string, boolean>
|
||||
permission?: Record<string, OpenCodePermission | Record<string, OpenCodePermission>>
|
||||
agent?: Record<string, OpenCodeAgentConfig>
|
||||
command?: Record<string, OpenCodeCommandConfig>
|
||||
mcp?: Record<string, OpenCodeMcpServer>
|
||||
}
|
||||
|
||||
export type OpenCodeAgentConfig = {
|
||||
description?: string
|
||||
mode?: "primary" | "subagent"
|
||||
model?: string
|
||||
temperature?: number
|
||||
tools?: Record<string, boolean>
|
||||
permission?: Record<string, OpenCodePermission>
|
||||
}
|
||||
|
||||
export type OpenCodeCommandConfig = {
|
||||
description?: string
|
||||
model?: string
|
||||
agent?: string
|
||||
template: string
|
||||
}
|
||||
|
||||
export type OpenCodeMcpServer = {
|
||||
type: "local" | "remote"
|
||||
command?: string[]
|
||||
url?: string
|
||||
environment?: Record<string, string>
|
||||
headers?: Record<string, string>
|
||||
enabled?: boolean
|
||||
}
|
||||
|
||||
export type OpenCodeAgentFile = {
|
||||
name: string
|
||||
content: string
|
||||
}
|
||||
|
||||
export type OpenCodePluginFile = {
|
||||
name: string
|
||||
content: string
|
||||
}
|
||||
|
||||
export type OpenCodeBundle = {
|
||||
config: OpenCodeConfig
|
||||
agents: OpenCodeAgentFile[]
|
||||
plugins: OpenCodePluginFile[]
|
||||
skillDirs: { sourceDir: string; name: string }[]
|
||||
}
|
||||
Reference in New Issue
Block a user