oh-my-claudecode-opencode 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +361 -0
  2. package/assets/AGENTS.md +357 -0
  3. package/assets/omco.example.json +34 -0
  4. package/assets/omco.schema.json +375 -0
  5. package/dist/agents/index.d.ts +139 -0
  6. package/dist/config/index.d.ts +179 -0
  7. package/dist/config/model-resolver.d.ts +46 -0
  8. package/dist/hooks/agent-usage-reminder.d.ts +12 -0
  9. package/dist/hooks/autopilot.d.ts +32 -0
  10. package/dist/hooks/context-recovery.d.ts +15 -0
  11. package/dist/hooks/continuation-messages.d.ts +24 -0
  12. package/dist/hooks/edit-error-recovery.d.ts +33 -0
  13. package/dist/hooks/index.d.ts +23 -0
  14. package/dist/hooks/keyword-detector.d.ts +23 -0
  15. package/dist/hooks/notepad.d.ts +109 -0
  16. package/dist/hooks/omc-orchestrator.d.ts +14 -0
  17. package/dist/hooks/persistent-mode.d.ts +60 -0
  18. package/dist/hooks/ralph-loop.d.ts +37 -0
  19. package/dist/hooks/ralph-verifier.d.ts +22 -0
  20. package/dist/hooks/remember-tag-processor.d.ts +47 -0
  21. package/dist/hooks/session-recovery.d.ts +10 -0
  22. package/dist/hooks/skill-injector.d.ts +16 -0
  23. package/dist/hooks/system-prompt-injector.d.ts +24 -0
  24. package/dist/hooks/todo-continuation-enforcer.d.ts +21 -0
  25. package/dist/hooks/tui-status.d.ts +72 -0
  26. package/dist/hooks/ultraqa-loop.d.ts +38 -0
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.js +31047 -0
  29. package/dist/plugin-handlers/config-handler.d.ts +35 -0
  30. package/dist/plugin-handlers/index.d.ts +1 -0
  31. package/dist/prd/index.d.ts +2 -0
  32. package/dist/prd/prd-manager.d.ts +34 -0
  33. package/dist/prd/progress-tracker.d.ts +22 -0
  34. package/dist/prompts/ultrawork.d.ts +3 -0
  35. package/dist/shared/logger.d.ts +3 -0
  36. package/dist/shared/session-state.d.ts +5 -0
  37. package/dist/state/autopilot-state.d.ts +30 -0
  38. package/dist/state/index.d.ts +5 -0
  39. package/dist/state/ralph-state.d.ts +18 -0
  40. package/dist/state/ultraqa-state.d.ts +34 -0
  41. package/dist/state/ultrawork-state.d.ts +13 -0
  42. package/dist/state/verification-state.d.ts +15 -0
  43. package/dist/tools/background-manager.d.ts +22 -0
  44. package/dist/tools/background-tools.d.ts +3 -0
  45. package/dist/tools/builtin.d.ts +1 -0
  46. package/dist/tools/call-omo-agent.d.ts +3 -0
  47. package/dist/tools/index.d.ts +4 -0
  48. package/package.json +63 -0
@@ -0,0 +1,35 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { OmoOmcsConfig } from "../config";
3
+ interface AgentConfig {
4
+ model?: string;
5
+ temperature?: number;
6
+ top_p?: number;
7
+ topP?: number;
8
+ topK?: number;
9
+ prompt?: string;
10
+ description?: string;
11
+ color?: string;
12
+ mode?: "subagent" | "primary" | "all";
13
+ maxSteps?: number;
14
+ tools?: Record<string, boolean>;
15
+ disable?: boolean;
16
+ }
17
+ interface CommandConfig {
18
+ template: string;
19
+ description?: string;
20
+ agent?: string;
21
+ model?: string;
22
+ subtask?: boolean;
23
+ }
24
+ interface OpenCodeConfig {
25
+ default_agent?: string;
26
+ agent?: Record<string, AgentConfig | undefined>;
27
+ command?: Record<string, CommandConfig>;
28
+ [key: string]: unknown;
29
+ }
30
+ export interface ConfigHandlerDeps {
31
+ ctx: PluginInput;
32
+ pluginConfig: OmoOmcsConfig;
33
+ }
34
+ export declare function createConfigHandler(deps: ConfigHandlerDeps): (config: OpenCodeConfig) => Promise<void>;
35
+ export {};
@@ -0,0 +1 @@
1
+ export { createConfigHandler, type ConfigHandlerDeps } from "./config-handler";
@@ -0,0 +1,2 @@
1
+ export { type UserStory, type PRD, readPrd, writePrd, createPrdFromTask, getIncompleteStories, getCompletedStories, getNextStory, markStoryComplete, addStory, getPrdStatus, formatPrdStatusMessage, generateStoryContextPrompt, } from "./prd-manager";
2
+ export { type IterationLog, type ProgressData, initializeProgress, readProgress, appendIteration, addPattern, getProgressSummary, formatProgressContext, } from "./progress-tracker";
@@ -0,0 +1,34 @@
1
+ export interface UserStory {
2
+ id: string;
3
+ title: string;
4
+ description?: string;
5
+ acceptanceCriteria: string[];
6
+ priority: number;
7
+ passes: boolean;
8
+ notes?: string;
9
+ completedAt?: string;
10
+ }
11
+ export interface PRD {
12
+ project: string;
13
+ branchName?: string;
14
+ description: string;
15
+ userStories: UserStory[];
16
+ createdAt?: string;
17
+ updatedAt?: string;
18
+ }
19
+ export declare function readPrd(projectDir: string): PRD | null;
20
+ export declare function writePrd(projectDir: string, prd: PRD): void;
21
+ export declare function createPrdFromTask(task: string, projectName?: string): PRD;
22
+ export declare function getIncompleteStories(prd: PRD): UserStory[];
23
+ export declare function getCompletedStories(prd: PRD): UserStory[];
24
+ export declare function getNextStory(prd: PRD): UserStory | null;
25
+ export declare function markStoryComplete(projectDir: string, storyId: string, notes?: string): boolean;
26
+ export declare function addStory(projectDir: string, story: UserStory): boolean;
27
+ export declare function getPrdStatus(prd: PRD): {
28
+ total: number;
29
+ completed: number;
30
+ remaining: number;
31
+ percentComplete: number;
32
+ };
33
+ export declare function formatPrdStatusMessage(prd: PRD): string;
34
+ export declare function generateStoryContextPrompt(prd: PRD): string;
@@ -0,0 +1,22 @@
1
+ import type { UserStory } from "./prd-manager";
2
+ export interface IterationLog {
3
+ iteration: number;
4
+ timestamp: string;
5
+ storyId: string;
6
+ storyTitle: string;
7
+ implementation: string[];
8
+ filesChanged: string[];
9
+ learnings: string[];
10
+ }
11
+ export interface ProgressData {
12
+ startedAt: string;
13
+ task: string;
14
+ patterns: string[];
15
+ iterations: IterationLog[];
16
+ }
17
+ export declare function initializeProgress(projectDir: string, task: string): void;
18
+ export declare function readProgress(projectDir: string): string | null;
19
+ export declare function appendIteration(projectDir: string, iteration: number, story: UserStory, implementation: string[], filesChanged: string[], learnings: string[]): void;
20
+ export declare function addPattern(projectDir: string, pattern: string): void;
21
+ export declare function getProgressSummary(projectDir: string): string;
22
+ export declare function formatProgressContext(projectDir: string): string;
@@ -0,0 +1,3 @@
1
+ export declare const ULTRAWORK_SYSTEM_PROMPT = "[ULTRAWORK MODE ACTIVATED - MAXIMUM INTENSITY]\n\n## THE ULTRAWORK OATH\n\nYou are now operating at **MAXIMUM INTENSITY**. Half-measures are unacceptable. Incomplete work is FAILURE. You will persist until EVERY task is VERIFIED complete.\n\nThis mode OVERRIDES default heuristics. Where default mode says \"parallelize when profitable,\" ultrawork says \"PARALLEL EVERYTHING.\"\n\n## ULTRAWORK OVERRIDES\n\n| Default Behavior | Ultrawork Override |\n|------------------|-------------------|\n| Parallelize when profitable | **PARALLEL EVERYTHING** |\n| Do simple tasks directly | **DELEGATE EVEN SMALL TASKS** |\n| Wait for verification | **DON'T WAIT - continue immediately** |\n| Background for long ops | **BACKGROUND EVERYTHING POSSIBLE** |\n\n## EXECUTION PROTOCOL\n\n### 1. PARALLEL EVERYTHING\n- Fire off MULTIPLE agents simultaneously - don't analyze, just launch\n- Don't wait when you can parallelize\n- Use background execution for ALL operations that support it\n- Maximum throughput is the only goal\n- Launch 3-5 agents in parallel when possible\n\n### 2. DELEGATE AGGRESSIVELY\nRoute tasks to specialists IMMEDIATELY - don't do it yourself:\n- `architect` \u2192 ANY debugging or analysis\n- `researcher` \u2192 ANY research or doc lookup\n- `explore` \u2192 ANY search operation\n- `frontend-engineer` \u2192 ANY UI work\n- `document-writer` \u2192 ANY documentation\n- `sisyphus-junior` \u2192 ANY code changes\n\n### 3. NEVER WAIT\n- Start the next task BEFORE the previous one completes\n- Check background task results LATER\n- Don't block on verification - launch it and continue\n- Maximum concurrency at all times\n\n### 4. PERSISTENCE ENFORCEMENT\n- Create TODO list IMMEDIATELY\n- Mark tasks in_progress BEFORE starting\n- Mark completed ONLY after VERIFICATION\n- LOOP until 100% complete\n- Re-check todo list before ANY conclusion attempt\n\n## THE ULTRAWORK PROMISE\n\nBefore stopping, VERIFY:\n- [ ] Todo list: ZERO pending/in_progress tasks\n- [ ] All functionality: TESTED and WORKING\n- [ ] All errors: RESOLVED\n- [ ] User's request: FULLY SATISFIED\n\n**If ANY checkbox is unchecked, CONTINUE WORKING. No exceptions.**\n\n## SMART MODEL ROUTING (SAVE TOKENS)\n\n**Choose tier based on task complexity: LOW (haiku) \u2192 MEDIUM (sonnet) \u2192 HIGH (opus)**\n\n| Domain | LOW (Haiku) | MEDIUM (Sonnet) | HIGH (Opus) |\n|--------|-------------|-----------------|-------------|\n| **Analysis** | architect-low | architect-medium | architect |\n| **Execution** | sisyphus-junior-low | sisyphus-junior | sisyphus-junior-high |\n| **Search** | explore | explore-medium | - |\n| **Research** | researcher-low | researcher | - |\n| **Frontend** | frontend-engineer-low | frontend-engineer | frontend-engineer-high |\n| **Docs** | document-writer | - | - |\n| **Planning** | - | - | prometheus, momus, metis |\n\n## THE BOULDER NEVER STOPS\n\nThe boulder does not stop until it reaches the summit. In ultrawork mode, it rolls FASTER.";
2
+ export declare const RALPH_LOOP_SYSTEM_PROMPT = "[RALPH LOOP ACTIVATED - INFINITE PERSISTENCE MODE]\n\n## THE RALPH OATH\n\nYou have entered the Ralph Loop - an INESCAPABLE development cycle that binds you to your task until VERIFIED completion. There is no early exit. There is no giving up. The only way out is through.\n\n## PRD-BASED WORKFLOW\n\nIf `.omc/prd.json` exists:\n1. Read the PRD file to understand all user stories\n2. Read `.omc/progress.txt` for learnings\n3. Work on highest priority story where `passes: false`\n4. Mark `passes: true` when story is complete\n5. Update progress.txt with learnings\n6. Repeat until ALL stories pass\n\nIf no PRD exists, create one:\n```json\n{\n \"project\": \"[Feature Name]\",\n \"description\": \"[Task description]\",\n \"userStories\": [\n {\n \"id\": \"US-001\",\n \"title\": \"[Short title]\",\n \"acceptanceCriteria\": [\"Criterion 1\", \"Typecheck passes\"],\n \"priority\": 1,\n \"passes\": false\n }\n ]\n}\n```\n\n## The Promise Mechanism\n\nThe `<promise>TASK_COMPLETE</promise>` tag is a SACRED CONTRACT. You may ONLY output it when:\n\n\u2713 ALL stories in prd.json have `passes: true`\n\u2713 ALL acceptance criteria for each story are met\n\u2713 Quality checks pass (typecheck, tests)\n\u2713 progress.txt updated with learnings\n\n## EXIT CONDITIONS\n\n| Condition | What Happens |\n|-----------|--------------|\n| `<promise>TASK_COMPLETE</promise>` | Loop ends - work verified complete |\n| All PRD stories pass | Loop can end |\n| User runs `/cancel-ralph` | Loop cancelled by user |\n| Max iterations reached | Safety limit |\n| Stop without promise | **CONTINUATION FORCED** |\n\n## VERIFICATION PROTOCOL\n\nBefore outputting promise:\n1. Self-check: All PRD stories pass?\n2. Run tests: Do they pass?\n3. Review changes: Production-ready?\n\n**NO PROMISE WITHOUT VERIFICATION.**";
3
+ export declare const ULTRAWORK_RALPH_SYSTEM_PROMPT = "[ULTRAWORK-RALPH ACTIVATED - MAXIMUM INTENSITY + COMPLETION GUARANTEE]\n\n## THE ULTIMATE MODE\n\nYou are now in **ULTRAWORK-RALPH** mode - the most powerful execution mode available. This combines:\n- **ULTRAWORK**: Maximum intensity, parallel everything, aggressive delegation\n- **RALPH LOOP**: Inescapable completion guarantee with verification\n\nThere is no half-measures. There is no early exit. You work at MAXIMUM INTENSITY until VERIFIED completion.\n\n## ULTRAWORK OVERRIDES (ACTIVE)\n\n| Default Behavior | Ultrawork Override |\n|------------------|-------------------|\n| Parallelize when profitable | **PARALLEL EVERYTHING** |\n| Do simple tasks directly | **DELEGATE EVEN SMALL TASKS** |\n| Wait for verification | **DON'T WAIT - continue immediately** |\n| Background for long ops | **BACKGROUND EVERYTHING POSSIBLE** |\n\n## RALPH LOOP ENFORCEMENT (ACTIVE)\n\nThe `<promise>TASK_COMPLETE</promise>` tag binds you to completion. You may ONLY output it when:\n\n- [ ] ALL todo items are marked 'completed'\n- [ ] ALL requested functionality is implemented AND TESTED\n- [ ] ALL errors have been resolved\n- [ ] You have TESTED (not assumed) the changes work\n\n**If you stop without the promise, YOU WILL BE FORCED TO CONTINUE.**\n\n## EXECUTION PROTOCOL\n\n### 1. PARALLEL EVERYTHING\n- Fire off MULTIPLE agents simultaneously\n- Use background execution for ALL operations\n- Launch 3-5 agents in parallel when possible\n- Maximum throughput is the only goal\n\n### 2. DELEGATE AGGRESSIVELY\nRoute tasks to specialists IMMEDIATELY:\n- `architect` / `architect-medium` \u2192 debugging, analysis, verification\n- `researcher` \u2192 research, doc lookup\n- `explore` \u2192 codebase search\n- `frontend-engineer` \u2192 UI work\n- `sisyphus-junior` / `sisyphus-junior-high` \u2192 code changes\n\n### 3. NEVER WAIT\n- Start the next task BEFORE the previous one completes\n- Check background task results LATER\n- Maximum concurrency at all times\n\n### 4. TODO OBSESSION\n- Create TODO list IMMEDIATELY with atomic steps\n- Mark in_progress BEFORE starting (one at a time)\n- Mark completed IMMEDIATELY after each step\n- NEVER batch completions\n\n## EXIT CONDITIONS\n\n| Condition | What Happens |\n|-----------|--------------|\n| `<promise>TASK_COMPLETE</promise>` | Both modes end - work verified complete |\n| User runs `/cancel-ralph` | Both modes cancelled |\n| Max iterations reached | Safety limit |\n| Stop without promise | **CONTINUATION FORCED** |\n\n## THE BOULDER NEVER STOPS\n\nThe boulder rolls at MAXIMUM SPEED until it reaches the summit. No shortcuts. No giving up. Only verified completion releases you.\n\nBegin working NOW. PARALLEL EVERYTHING. The loop will not release you until you earn your `<promise>TASK_COMPLETE</promise>`.";
@@ -0,0 +1,3 @@
1
+ export declare function log(message: string, data?: Record<string, unknown>): void;
2
+ export declare function warn(message: string, data?: Record<string, unknown>): void;
3
+ export declare function error(message: string, data?: Record<string, unknown>): void;
@@ -0,0 +1,5 @@
1
+ export declare function getMainSessionID(): string | undefined;
2
+ export declare function setMainSessionID(sessionID: string | undefined): void;
3
+ export declare function getSessionAgent(sessionID: string): string | undefined;
4
+ export declare function setSessionAgent(sessionID: string, agent: string): void;
5
+ export declare function clearSessionAgent(sessionID: string): void;
@@ -0,0 +1,30 @@
1
+ export interface AutopilotState {
2
+ active: boolean;
3
+ sessionId: string;
4
+ phase: 'expansion' | 'planning' | 'execution' | 'qa' | 'validation' | 'complete';
5
+ spec: string;
6
+ plan: string;
7
+ progress: TaskProgress[];
8
+ startedAt: string;
9
+ completedAt?: string;
10
+ lastActivityAt: string;
11
+ }
12
+ export interface TaskProgress {
13
+ taskId: string;
14
+ description: string;
15
+ status: 'pending' | 'in_progress' | 'completed' | 'failed';
16
+ startedAt?: string;
17
+ completedAt?: string;
18
+ error?: string;
19
+ }
20
+ export declare function getOmcDir(projectDir: string): string;
21
+ export declare function getStatePath(projectDir: string): string;
22
+ export declare function ensureDir(dir: string): void;
23
+ export declare function readAutopilotState(projectDir: string): AutopilotState | null;
24
+ export declare function writeAutopilotState(projectDir: string, state: AutopilotState): void;
25
+ export declare function clearAutopilotState(projectDir: string): void;
26
+ export declare function createAutopilotState(sessionId: string, initialSpec?: string): AutopilotState;
27
+ export declare function updateAutopilotPhase(projectDir: string, state: AutopilotState, phase: AutopilotState['phase']): void;
28
+ export declare function addTaskProgress(projectDir: string, state: AutopilotState, task: TaskProgress): void;
29
+ export declare function updateTaskProgress(projectDir: string, state: AutopilotState, taskId: string, status: TaskProgress['status'], error?: string): void;
30
+ export declare function markAutopilotComplete(projectDir: string, state: AutopilotState): void;
@@ -0,0 +1,5 @@
1
+ export { type UltraworkState, readUltraworkState, writeUltraworkState, clearUltraworkState, createUltraworkState, updateUltraworkStateChecked, } from "./ultrawork-state";
2
+ export { type RalphState, readRalphState, writeRalphState, clearRalphState, createRalphState, updateRalphStateIteration, markRalphStateComplete, } from "./ralph-state";
3
+ export { type VerificationState, readVerificationState, writeVerificationState, clearVerificationState, createVerificationState, updateVerificationAttempt, } from "./verification-state";
4
+ export { type AutopilotState, type TaskProgress, readAutopilotState, writeAutopilotState, clearAutopilotState, createAutopilotState, updateAutopilotPhase, addTaskProgress, updateTaskProgress, markAutopilotComplete, } from "./autopilot-state";
5
+ export { type UltraQAState, type QAIssue, readUltraQAState, writeUltraQAState, clearUltraQAState, createUltraQAState, updateUltraQAIteration, addQAIssue, markIssueFixed, markUltraQAComplete, isUltraQAPassing, } from "./ultraqa-state";
@@ -0,0 +1,18 @@
1
+ export interface RalphState {
2
+ active: boolean;
3
+ iteration: number;
4
+ max_iterations: number;
5
+ completion_promise: string;
6
+ started_at: string;
7
+ prompt: string;
8
+ session_id: string;
9
+ prd_mode: boolean;
10
+ current_story_id: string | null;
11
+ last_activity_at: string;
12
+ }
13
+ export declare function readRalphState(projectDir: string): RalphState | null;
14
+ export declare function writeRalphState(projectDir: string, state: RalphState): void;
15
+ export declare function clearRalphState(projectDir: string): void;
16
+ export declare function createRalphState(sessionId: string, prompt: string, maxIterations?: number, prdMode?: boolean): RalphState;
17
+ export declare function updateRalphStateIteration(projectDir: string, state: RalphState, currentStoryId?: string): void;
18
+ export declare function markRalphStateComplete(projectDir: string, state: RalphState): void;
@@ -0,0 +1,34 @@
1
+ export interface UltraQAState {
2
+ active: boolean;
3
+ sessionId: string;
4
+ goal: string;
5
+ iteration: number;
6
+ maxIterations: number;
7
+ lastBuildResult?: 'pass' | 'fail';
8
+ lastLintResult?: 'pass' | 'fail';
9
+ lastTestResult?: 'pass' | 'fail';
10
+ issues: QAIssue[];
11
+ startedAt: string;
12
+ completedAt?: string;
13
+ lastActivityAt: string;
14
+ }
15
+ export interface QAIssue {
16
+ type: 'build' | 'lint' | 'test';
17
+ message: string;
18
+ file?: string;
19
+ line?: number;
20
+ fixedAt?: string;
21
+ }
22
+ export declare function readUltraQAState(projectDir: string): UltraQAState | null;
23
+ export declare function writeUltraQAState(projectDir: string, state: UltraQAState): void;
24
+ export declare function clearUltraQAState(projectDir: string): void;
25
+ export declare function createUltraQAState(sessionId: string, goal: string, maxIterations?: number): UltraQAState;
26
+ export declare function updateUltraQAIteration(projectDir: string, state: UltraQAState, results: {
27
+ build?: 'pass' | 'fail';
28
+ lint?: 'pass' | 'fail';
29
+ test?: 'pass' | 'fail';
30
+ }): void;
31
+ export declare function addQAIssue(projectDir: string, state: UltraQAState, issue: QAIssue): void;
32
+ export declare function markIssueFixed(projectDir: string, state: UltraQAState, issueIndex: number): void;
33
+ export declare function markUltraQAComplete(projectDir: string, state: UltraQAState): void;
34
+ export declare function isUltraQAPassing(state: UltraQAState): boolean;
@@ -0,0 +1,13 @@
1
+ export interface UltraworkState {
2
+ active: boolean;
3
+ started_at: string;
4
+ original_prompt: string;
5
+ session_id: string;
6
+ reinforcement_count: number;
7
+ last_checked_at: string;
8
+ }
9
+ export declare function readUltraworkState(projectDir: string): UltraworkState | null;
10
+ export declare function writeUltraworkState(projectDir: string, state: UltraworkState, writeGlobal?: boolean): void;
11
+ export declare function clearUltraworkState(projectDir: string, clearGlobal?: boolean): void;
12
+ export declare function createUltraworkState(sessionId: string, originalPrompt: string): UltraworkState;
13
+ export declare function updateUltraworkStateChecked(projectDir: string, state: UltraworkState): void;
@@ -0,0 +1,15 @@
1
+ export interface VerificationState {
2
+ pending: boolean;
3
+ original_task: string;
4
+ completion_claim: string;
5
+ verification_attempts: number;
6
+ max_verification_attempts: number;
7
+ oracle_feedback: string | null;
8
+ last_attempt_at: string | null;
9
+ session_id: string;
10
+ }
11
+ export declare function readVerificationState(projectDir: string): VerificationState | null;
12
+ export declare function writeVerificationState(projectDir: string, state: VerificationState): void;
13
+ export declare function clearVerificationState(projectDir: string): void;
14
+ export declare function createVerificationState(sessionId: string, originalTask: string, completionClaim: string, maxAttempts?: number): VerificationState;
15
+ export declare function updateVerificationAttempt(projectDir: string, state: VerificationState, feedback: string | null, approved: boolean): void;
@@ -0,0 +1,22 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { BackgroundTaskConfig } from "../config";
3
+ export interface BackgroundTask {
4
+ id: string;
5
+ status: "running" | "completed" | "failed" | "cancelled";
6
+ description: string;
7
+ parentSessionID: string;
8
+ sessionID?: string;
9
+ result?: string;
10
+ error?: string;
11
+ startedAt: number;
12
+ completedAt?: number;
13
+ }
14
+ export interface BackgroundManager {
15
+ createTask: (parentSessionID: string, description: string, prompt: string, agent: string) => Promise<BackgroundTask>;
16
+ getTask: (taskId: string) => BackgroundTask | undefined;
17
+ getTasksByParentSession: (sessionID: string) => BackgroundTask[];
18
+ cancelTask: (taskId: string) => boolean;
19
+ cancelAllTasks: (parentSessionID?: string) => number;
20
+ waitForTask: (taskId: string, timeoutMs?: number) => Promise<BackgroundTask>;
21
+ }
22
+ export declare function createBackgroundManager(ctx: PluginInput, config?: BackgroundTaskConfig): BackgroundManager;
@@ -0,0 +1,3 @@
1
+ import { type ToolDefinition } from "@opencode-ai/plugin";
2
+ import type { BackgroundManager } from "./background-manager";
3
+ export declare function createBackgroundTools(manager: BackgroundManager, _client: unknown): Record<string, ToolDefinition>;
@@ -0,0 +1 @@
1
+ export declare const builtinTools: {};
@@ -0,0 +1,3 @@
1
+ import { type PluginInput, type ToolDefinition } from "@opencode-ai/plugin";
2
+ import type { BackgroundManager } from "./background-manager";
3
+ export declare function createCallOmoAgent(ctx: PluginInput, manager: BackgroundManager): ToolDefinition;
@@ -0,0 +1,4 @@
1
+ export { createBackgroundManager, type BackgroundManager, type BackgroundTask } from "./background-manager";
2
+ export { createBackgroundTools } from "./background-tools";
3
+ export { createCallOmoAgent } from "./call-omo-agent";
4
+ export { builtinTools } from "./builtin";
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "oh-my-claudecode-opencode",
3
+ "version": "0.1.0",
4
+ "description": "OpenCode port of oh-my-claudecode - Multi-agent orchestration plugin (omco)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "files": [
9
+ "dist",
10
+ "assets"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ },
17
+ "./schema.json": "./assets/omco.schema.json"
18
+ },
19
+ "scripts": {
20
+ "build": "bun build src/index.ts --outdir dist --target bun --format esm && tsc --emitDeclarationOnly",
21
+ "build:watch": "bun build src/index.ts --outdir dist --target bun --format esm --watch",
22
+ "clean": "rm -rf dist",
23
+ "prepublishOnly": "bun run clean && bun run build",
24
+ "typecheck": "tsc --noEmit",
25
+ "test": "bun test",
26
+ "lint": "eslint src --ext .ts"
27
+ },
28
+ "keywords": [
29
+ "opencode",
30
+ "plugin",
31
+ "oh-my-claudecode",
32
+ "omco",
33
+ "multi-agent",
34
+ "orchestration",
35
+ "ai",
36
+ "llm",
37
+ "ultrawork",
38
+ "ralph-loop"
39
+ ],
40
+ "author": "calvin",
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/devswha/oh-my-claudecode-opencode.git"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/devswha/oh-my-claudecode-opencode/issues"
48
+ },
49
+ "homepage": "https://github.com/devswha/oh-my-claudecode-opencode#readme",
50
+ "dependencies": {
51
+ "@opencode-ai/plugin": "^1.1.26",
52
+ "@opencode-ai/sdk": "^1.1.26",
53
+ "zod": "^4.1.8"
54
+ },
55
+ "devDependencies": {
56
+ "@types/node": "^22.0.0",
57
+ "bun-types": "latest",
58
+ "typescript": "^5.7.3"
59
+ },
60
+ "peerDependencies": {
61
+ "@opencode-ai/plugin": ">=1.0.0"
62
+ }
63
+ }