diff --git a/.github/workflows/publish-platform.yml b/.github/workflows/publish-platform.yml index a7f9439ca..2c9b4ba34 100644 --- a/.github/workflows/publish-platform.yml +++ b/.github/workflows/publish-platform.yml @@ -197,11 +197,6 @@ jobs: retention-days: 1 if-no-files-found: error - # ============================================================================= - # Job 2: Publish all platforms (oh-my-opencode + oh-my-openagent) - # - Runs on ubuntu-latest for ALL platforms (just downloading artifacts) - # - Uses NODE_AUTH_TOKEN for auth + OIDC for provenance attestation - # ============================================================================= publish: needs: build if: always() && !cancelled() @@ -226,23 +221,9 @@ jobs: echo "→ ${PKG_NAME}@${VERSION} will be published" fi - - name: Check if oh-my-openagent already published - id: check-openagent - run: | - PKG_NAME="oh-my-openagent-${{ matrix.platform }}" - VERSION="${{ inputs.version }}" - STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/${PKG_NAME}/${VERSION}") - if [ "$STATUS" = "200" ]; then - echo "skip=true" >> $GITHUB_OUTPUT - echo "✓ ${PKG_NAME}@${VERSION} already published, skipping" - else - echo "skip=false" >> $GITHUB_OUTPUT - echo "→ ${PKG_NAME}@${VERSION} will be published" - fi - - name: Download artifact id: download - if: steps.check.outputs.skip != 'true' || steps.check-openagent.outputs.skip != 'true' + if: steps.check.outputs.skip != 'true' continue-on-error: true uses: actions/download-artifact@v4 with: @@ -250,7 +231,7 @@ jobs: path: . - name: Extract artifact - if: (steps.check.outputs.skip != 'true' || steps.check-openagent.outputs.skip != 'true') && steps.download.outcome == 'success' + if: steps.check.outputs.skip != 'true' && steps.download.outcome == 'success' run: | PLATFORM="${{ matrix.platform }}" mkdir -p packages/${PLATFORM} @@ -266,7 +247,7 @@ jobs: ls -la packages/${PLATFORM}/bin/ - uses: actions/setup-node@v4 - if: (steps.check.outputs.skip != 'true' || steps.check-openagent.outputs.skip != 'true') && steps.download.outcome == 'success' + if: steps.check.outputs.skip != 'true' && steps.download.outcome == 'success' with: node-version: "24" registry-url: "https://registry.npmjs.org" @@ -286,25 +267,3 @@ jobs: NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} NPM_CONFIG_PROVENANCE: true timeout-minutes: 15 - - - name: Publish oh-my-openagent-${{ matrix.platform }} - if: steps.check-openagent.outputs.skip != 'true' && steps.download.outcome == 'success' - run: | - cd packages/${{ matrix.platform }} - - # Rename package for oh-my-openagent - jq --arg name "oh-my-openagent-${{ matrix.platform }}" \ - --arg desc "Platform-specific binary for oh-my-openagent (${{ matrix.platform }})" \ - '.name = $name | .description = $desc | .bin = {"oh-my-openagent": (.bin | to_entries | .[0].value)}' \ - package.json > tmp.json && mv tmp.json package.json - - TAG_ARG="" - if [ -n "${{ inputs.dist_tag }}" ]; then - TAG_ARG="--tag ${{ inputs.dist_tag }}" - fi - - npm publish --access public --provenance $TAG_ARG - env: - NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} - NPM_CONFIG_PROVENANCE: true - timeout-minutes: 15 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f22c81ce4..ef51d5038 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -215,40 +215,6 @@ jobs: env: NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} NPM_CONFIG_PROVENANCE: true - - name: Publish oh-my-openagent - if: steps.check.outputs.skip != 'true' - run: | - # Update package name to oh-my-openagent - jq '.name = "oh-my-openagent"' package.json > tmp.json && mv tmp.json package.json - - # Update optionalDependencies to use oh-my-openagent naming - jq '.optionalDependencies = { - "oh-my-openagent-darwin-arm64": "${{ steps.version.outputs.version }}", - "oh-my-openagent-darwin-x64": "${{ steps.version.outputs.version }}", - "oh-my-openagent-darwin-x64-baseline": "${{ steps.version.outputs.version }}", - "oh-my-openagent-linux-arm64": "${{ steps.version.outputs.version }}", - "oh-my-openagent-linux-arm64-musl": "${{ steps.version.outputs.version }}", - "oh-my-openagent-linux-x64": "${{ steps.version.outputs.version }}", - "oh-my-openagent-linux-x64-baseline": "${{ steps.version.outputs.version }}", - "oh-my-openagent-linux-x64-musl": "${{ steps.version.outputs.version }}", - "oh-my-openagent-linux-x64-musl-baseline": "${{ steps.version.outputs.version }}", - "oh-my-openagent-windows-x64": "${{ steps.version.outputs.version }}", - "oh-my-openagent-windows-x64-baseline": "${{ steps.version.outputs.version }}" - }' package.json > tmp.json && mv tmp.json package.json - - TAG_ARG="" - if [ -n "${{ steps.version.outputs.dist_tag }}" ]; then - TAG_ARG="--tag ${{ steps.version.outputs.dist_tag }}" - fi - npm publish --access public --provenance $TAG_ARG || echo "oh-my-openagent publish may have failed (package may already exist)" - env: - NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} - NPM_CONFIG_PROVENANCE: true - - name: Restore package.json - if: steps.check.outputs.skip != 'true' - run: | - # Restore original package name - jq '.name = "oh-my-opencode"' package.json > tmp.json && mv tmp.json package.json trigger-platform: runs-on: ubuntu-latest diff --git a/README.md b/README.md index ac8c31bf3..17575df4c 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@
[![GitHub Release](https://img.shields.io/github/v/release/code-yeongyu/oh-my-openagent?color=369eff&labelColor=black&logo=github&style=flat-square)](https://github.com/code-yeongyu/oh-my-openagent/releases) -[![npm downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fohmyopenagent.com%2Fapi%2Fnpm-downloads&style=flat-square)](https://www.npmjs.com/package/oh-my-openagent) +[![npm downloads](https://img.shields.io/endpoint?url=https%3A%2F%2Fohmyopenagent.com%2Fapi%2Fnpm-downloads&style=flat-square)](https://www.npmjs.com/package/oh-my-opencode) [![GitHub Contributors](https://img.shields.io/github/contributors/code-yeongyu/oh-my-openagent?color=c4f042&labelColor=black&style=flat-square)](https://github.com/code-yeongyu/oh-my-openagent/graphs/contributors) [![GitHub Forks](https://img.shields.io/github/forks/code-yeongyu/oh-my-openagent?color=8ae8ff&labelColor=black&style=flat-square)](https://github.com/code-yeongyu/oh-my-openagent/network/members) [![GitHub Stars](https://img.shields.io/github/stars/code-yeongyu/oh-my-openagent?color=ffcb47&labelColor=black&style=flat-square)](https://github.com/code-yeongyu/oh-my-openagent/stargazers) diff --git a/assets/oh-my-openagent.schema.json b/assets/oh-my-openagent.schema.json deleted file mode 100644 index d034c5103..000000000 --- a/assets/oh-my-openagent.schema.json +++ /dev/null @@ -1,3930 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-openagent.schema.json", - "title": "Oh My OpenAgent Configuration", - "description": "Configuration schema for oh-my-openagent plugin", - "type": "object", - "properties": { - "$schema": { - "type": "string" - }, - "new_task_system_enabled": { - "type": "boolean" - }, - "default_run_agent": { - "type": "string" - }, - "disabled_mcps": { - "type": "array", - "items": { - "type": "string", - "minLength": 1 - } - }, - "disabled_agents": { - "type": "array", - "items": { - "type": "string" - } - }, - "disabled_skills": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "playwright", - "agent-browser", - "dev-browser", - "frontend-ui-ux", - "git-master" - ] - } - }, - "disabled_hooks": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "gpt-permission-continuation", - "todo-continuation-enforcer", - "context-window-monitor", - "session-recovery", - "session-notification", - "comment-checker", - "tool-output-truncator", - "question-label-truncator", - "directory-agents-injector", - "directory-readme-injector", - "empty-task-response-detector", - "think-mode", - "model-fallback", - "anthropic-context-window-limit-recovery", - "preemptive-compaction", - "rules-injector", - "background-notification", - "auto-update-checker", - "startup-toast", - "keyword-detector", - "agent-usage-reminder", - "non-interactive-env", - "interactive-bash-session", - "thinking-block-validator", - "ralph-loop", - "category-skill-reminder", - "compaction-context-injector", - "compaction-todo-preserver", - "claude-code-hooks", - "auto-slash-command", - "edit-error-recovery", - "json-error-recovery", - "delegate-task-retry", - "prometheus-md-only", - "sisyphus-junior-notepad", - "no-sisyphus-gpt", - "no-hephaestus-non-gpt", - "start-work", - "atlas", - "unstable-agent-babysitter", - "task-resume-info", - "stop-continuation-guard", - "tasks-todowrite-disabler", - "runtime-fallback", - "write-existing-file-guard", - "anthropic-effort", - "hashline-read-enhancer", - "read-image-resizer" - ] - } - }, - "disabled_commands": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "init-deep", - "ralph-loop", - "ulw-loop", - "cancel-ralph", - "refactor", - "start-work", - "stop-continuation" - ] - } - }, - "disabled_tools": { - "type": "array", - "items": { - "type": "string" - } - }, - "hashline_edit": { - "type": "boolean" - }, - "model_fallback": { - "type": "boolean" - }, - "agents": { - "type": "object", - "properties": { - "build": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "plan": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "sisyphus": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "hephaestus": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "allow_non_gpt_model": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "sisyphus-junior": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "OpenCode-Builder": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "prometheus": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "metis": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "momus": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "oracle": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "librarian": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "explore": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "multimodal-looker": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "atlas": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "category": { - "type": "string" - }, - "skills": { - "type": "array", - "items": { - "type": "string" - } - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "prompt": { - "type": "string" - }, - "prompt_append": { - "type": "string" - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "disable": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "mode": { - "type": "string", - "enum": [ - "subagent", - "primary", - "all" - ] - }, - "color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$" - }, - "permission": { - "type": "object", - "properties": { - "edit": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "bash": { - "anyOf": [ - { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - } - ] - }, - "webfetch": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "task": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "doom_loop": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - }, - "external_directory": { - "type": "string", - "enum": [ - "ask", - "allow", - "deny" - ] - } - }, - "additionalProperties": false - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "providerOptions": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "ultrawork": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - }, - "compaction": { - "type": "object", - "properties": { - "model": { - "type": "string" - }, - "variant": { - "type": "string" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "categories": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "model": { - "type": "string" - }, - "fallback_models": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "variant": { - "type": "string" - }, - "temperature": { - "type": "number", - "minimum": 0, - "maximum": 2 - }, - "top_p": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "maxTokens": { - "type": "number" - }, - "thinking": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "enabled", - "disabled" - ] - }, - "budgetTokens": { - "type": "number" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "reasoningEffort": { - "type": "string", - "enum": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "textVerbosity": { - "type": "string", - "enum": [ - "low", - "medium", - "high" - ] - }, - "tools": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - }, - "prompt_append": { - "type": "string" - }, - "max_prompt_tokens": { - "type": "integer", - "exclusiveMinimum": 0, - "maximum": 9007199254740991 - }, - "is_unstable_agent": { - "type": "boolean" - }, - "disable": { - "type": "boolean" - } - }, - "additionalProperties": false - } - }, - "claude_code": { - "type": "object", - "properties": { - "mcp": { - "type": "boolean" - }, - "commands": { - "type": "boolean" - }, - "skills": { - "type": "boolean" - }, - "agents": { - "type": "boolean" - }, - "hooks": { - "type": "boolean" - }, - "plugins": { - "type": "boolean" - }, - "plugins_override": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "boolean" - } - } - }, - "additionalProperties": false - }, - "sisyphus_agent": { - "type": "object", - "properties": { - "disabled": { - "type": "boolean" - }, - "default_builder_enabled": { - "type": "boolean" - }, - "planner_enabled": { - "type": "boolean" - }, - "replace_plan": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "comment_checker": { - "type": "object", - "properties": { - "custom_prompt": { - "type": "string" - } - }, - "additionalProperties": false - }, - "experimental": { - "type": "object", - "properties": { - "aggressive_truncation": { - "type": "boolean" - }, - "auto_resume": { - "type": "boolean" - }, - "preemptive_compaction": { - "type": "boolean" - }, - "truncate_all_tool_outputs": { - "type": "boolean" - }, - "dynamic_context_pruning": { - "type": "object", - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "notification": { - "default": "detailed", - "type": "string", - "enum": [ - "off", - "minimal", - "detailed" - ] - }, - "turn_protection": { - "type": "object", - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "turns": { - "default": 3, - "type": "number", - "minimum": 1, - "maximum": 10 - } - }, - "required": [ - "enabled", - "turns" - ], - "additionalProperties": false - }, - "protected_tools": { - "default": [ - "task", - "todowrite", - "todoread", - "lsp_rename", - "session_read", - "session_write", - "session_search" - ], - "type": "array", - "items": { - "type": "string" - } - }, - "strategies": { - "type": "object", - "properties": { - "deduplication": { - "type": "object", - "properties": { - "enabled": { - "default": true, - "type": "boolean" - } - }, - "required": [ - "enabled" - ], - "additionalProperties": false - }, - "supersede_writes": { - "type": "object", - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "aggressive": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "enabled", - "aggressive" - ], - "additionalProperties": false - }, - "purge_errors": { - "type": "object", - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "turns": { - "default": 5, - "type": "number", - "minimum": 1, - "maximum": 20 - } - }, - "required": [ - "enabled", - "turns" - ], - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "required": [ - "enabled", - "notification", - "protected_tools" - ], - "additionalProperties": false - }, - "task_system": { - "type": "boolean" - }, - "plugin_load_timeout_ms": { - "type": "number", - "minimum": 1000 - }, - "safe_hook_creation": { - "type": "boolean" - }, - "disable_omo_env": { - "type": "boolean" - }, - "hashline_edit": { - "type": "boolean" - }, - "model_fallback_title": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "auto_update": { - "type": "boolean" - }, - "skills": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "object", - "properties": { - "sources": { - "type": "array", - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "recursive": { - "type": "boolean" - }, - "glob": { - "type": "string" - } - }, - "required": [ - "path" - ], - "additionalProperties": false - } - ] - } - }, - "enable": { - "type": "array", - "items": { - "type": "string" - } - }, - "disable": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "template": { - "type": "string" - }, - "from": { - "type": "string" - }, - "model": { - "type": "string" - }, - "agent": { - "type": "string" - }, - "subtask": { - "type": "boolean" - }, - "argument-hint": { - "type": "string" - }, - "license": { - "type": "string" - }, - "compatibility": { - "type": "string" - }, - "metadata": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "allowed-tools": { - "type": "array", - "items": { - "type": "string" - } - }, - "disable": { - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - } - ] - }, - "ralph_loop": { - "type": "object", - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "default_max_iterations": { - "default": 100, - "type": "number", - "minimum": 1, - "maximum": 1000 - }, - "state_dir": { - "type": "string" - }, - "default_strategy": { - "default": "continue", - "type": "string", - "enum": [ - "reset", - "continue" - ] - } - }, - "required": [ - "enabled", - "default_max_iterations", - "default_strategy" - ], - "additionalProperties": false - }, - "runtime_fallback": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "retry_on_errors": { - "type": "array", - "items": { - "type": "number" - } - }, - "max_fallback_attempts": { - "type": "number", - "minimum": 1, - "maximum": 20 - }, - "cooldown_seconds": { - "type": "number", - "minimum": 0 - }, - "timeout_seconds": { - "type": "number", - "minimum": 0 - }, - "notify_on_fallback": { - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - }, - "background_task": { - "type": "object", - "properties": { - "defaultConcurrency": { - "type": "number", - "minimum": 1 - }, - "providerConcurrency": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "number", - "minimum": 0 - } - }, - "modelConcurrency": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": { - "type": "number", - "minimum": 0 - } - }, - "maxDepth": { - "type": "integer", - "minimum": 1, - "maximum": 9007199254740991 - }, - "maxDescendants": { - "type": "integer", - "minimum": 1, - "maximum": 9007199254740991 - }, - "staleTimeoutMs": { - "type": "number", - "minimum": 60000 - }, - "messageStalenessTimeoutMs": { - "type": "number", - "minimum": 60000 - }, - "syncPollTimeoutMs": { - "type": "number", - "minimum": 60000 - } - }, - "additionalProperties": false - }, - "notification": { - "type": "object", - "properties": { - "force_enable": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "babysitting": { - "type": "object", - "properties": { - "timeout_ms": { - "default": 120000, - "type": "number" - } - }, - "required": [ - "timeout_ms" - ], - "additionalProperties": false - }, - "git_master": { - "type": "object", - "properties": { - "commit_footer": { - "default": true, - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "string" - } - ] - }, - "include_co_authored_by": { - "default": true, - "type": "boolean" - }, - "git_env_prefix": { - "default": "GIT_MASTER=1", - "type": "string" - } - }, - "required": [ - "commit_footer", - "include_co_authored_by", - "git_env_prefix" - ], - "additionalProperties": false - }, - "browser_automation_engine": { - "type": "object", - "properties": { - "provider": { - "default": "playwright", - "type": "string", - "enum": [ - "playwright", - "agent-browser", - "dev-browser", - "playwright-cli" - ] - } - }, - "required": [ - "provider" - ], - "additionalProperties": false - }, - "websearch": { - "type": "object", - "properties": { - "provider": { - "type": "string", - "enum": [ - "exa", - "tavily" - ] - } - }, - "additionalProperties": false - }, - "tmux": { - "type": "object", - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "layout": { - "default": "main-vertical", - "type": "string", - "enum": [ - "main-horizontal", - "main-vertical", - "tiled", - "even-horizontal", - "even-vertical" - ] - }, - "main_pane_size": { - "default": 60, - "type": "number", - "minimum": 20, - "maximum": 80 - }, - "main_pane_min_width": { - "default": 120, - "type": "number", - "minimum": 40 - }, - "agent_pane_min_width": { - "default": 40, - "type": "number", - "minimum": 20 - } - }, - "required": [ - "enabled", - "layout", - "main_pane_size", - "main_pane_min_width", - "agent_pane_min_width" - ], - "additionalProperties": false - }, - "sisyphus": { - "type": "object", - "properties": { - "tasks": { - "type": "object", - "properties": { - "storage_path": { - "type": "string" - }, - "task_list_id": { - "type": "string" - }, - "claude_code_compat": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "claude_code_compat" - ], - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "start_work": { - "type": "object", - "properties": { - "auto_commit": { - "default": true, - "type": "boolean" - } - }, - "required": [ - "auto_commit" - ], - "additionalProperties": false - }, - "_migrations": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false -} diff --git a/script/build-schema.ts b/script/build-schema.ts index 747a5c9ed..6b2a2891f 100644 --- a/script/build-schema.ts +++ b/script/build-schema.ts @@ -3,30 +3,15 @@ import { createOhMyOpenCodeJsonSchema } from "./build-schema-document" const SCHEMA_OUTPUT_PATH = "assets/oh-my-opencode.schema.json" const DIST_SCHEMA_OUTPUT_PATH = "dist/oh-my-opencode.schema.json" -const OPENAGENT_SCHEMA_OUTPUT_PATH = "assets/oh-my-openagent.schema.json" -const OPENAGENT_DIST_SCHEMA_OUTPUT_PATH = "dist/oh-my-openagent.schema.json" async function main() { console.log("Generating JSON Schema...") const finalSchema = createOhMyOpenCodeJsonSchema() - - // oh-my-opencode schema (backward compatibility) await Bun.write(SCHEMA_OUTPUT_PATH, JSON.stringify(finalSchema, null, 2)) await Bun.write(DIST_SCHEMA_OUTPUT_PATH, JSON.stringify(finalSchema, null, 2)) - // oh-my-openagent schema (new name) - const openAgentSchema = { - ...finalSchema, - $id: "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-openagent.schema.json", - title: "Oh My OpenAgent Configuration", - description: "Configuration schema for oh-my-openagent plugin", - } - await Bun.write(OPENAGENT_SCHEMA_OUTPUT_PATH, JSON.stringify(openAgentSchema, null, 2)) - await Bun.write(OPENAGENT_DIST_SCHEMA_OUTPUT_PATH, JSON.stringify(openAgentSchema, null, 2)) - console.log(`✓ JSON Schema generated: ${SCHEMA_OUTPUT_PATH}`) - console.log(`✓ JSON Schema generated: ${OPENAGENT_SCHEMA_OUTPUT_PATH}`) } main() diff --git a/src/cli/config-manager/add-plugin-to-opencode-config.ts b/src/cli/config-manager/add-plugin-to-opencode-config.ts index 82592fcf7..53af77a82 100644 --- a/src/cli/config-manager/add-plugin-to-opencode-config.ts +++ b/src/cli/config-manager/add-plugin-to-opencode-config.ts @@ -7,8 +7,7 @@ import { detectConfigFormat } from "./opencode-config-format" import { parseOpenCodeConfigFileWithError, type OpenCodeConfig } from "./parse-opencode-config-file" import { getPluginNameWithVersion } from "./plugin-name-with-version" -const OLD_PACKAGE_NAME = "oh-my-opencode" -const NEW_PACKAGE_NAME = "oh-my-openagent" +const PACKAGE_NAME = "oh-my-opencode" export async function addPluginToOpenCodeConfig(currentVersion: string): Promise { try { @@ -22,7 +21,7 @@ export async function addPluginToOpenCodeConfig(currentVersion: string): Promise } const { format, path } = detectConfigFormat() - const pluginEntry = await getPluginNameWithVersion(currentVersion, NEW_PACKAGE_NAME) + const pluginEntry = await getPluginNameWithVersion(currentVersion, PACKAGE_NAME) try { if (format === "none") { @@ -42,13 +41,7 @@ export async function addPluginToOpenCodeConfig(currentVersion: string): Promise const config = parseResult.config const plugins = config.plugin ?? [] - const existingIndex = plugins.findIndex( - (p) => - p === OLD_PACKAGE_NAME || - p.startsWith(`${OLD_PACKAGE_NAME}@`) || - p === NEW_PACKAGE_NAME || - p.startsWith(`${NEW_PACKAGE_NAME}@`) - ) + const existingIndex = plugins.findIndex((plugin) => plugin === PACKAGE_NAME || plugin.startsWith(`${PACKAGE_NAME}@`)) if (existingIndex !== -1) { if (plugins[existingIndex] === pluginEntry) { diff --git a/src/cli/config-manager/detect-current-config.ts b/src/cli/config-manager/detect-current-config.ts index b251debdb..5900f2777 100644 --- a/src/cli/config-manager/detect-current-config.ts +++ b/src/cli/config-manager/detect-current-config.ts @@ -56,6 +56,7 @@ function detectProvidersFromOmoConfig(): { } export function detectCurrentConfig(): DetectedConfig { + const PACKAGE_NAME = "oh-my-opencode" const result: DetectedConfig = { isInstalled: false, hasClaude: true, @@ -65,7 +66,7 @@ export function detectCurrentConfig(): DetectedConfig { hasCopilot: false, hasOpencodeZen: true, hasZaiCodingPlan: false, -hasKimiForCoding: false, + hasKimiForCoding: false, hasOpencodeGo: false, } @@ -81,9 +82,7 @@ hasKimiForCoding: false, const openCodeConfig = parseResult.config const plugins = openCodeConfig.plugin ?? [] - const OLD_PACKAGE_NAME = "oh-my-opencode" -const NEW_PACKAGE_NAME = "oh-my-openagent" -result.isInstalled = plugins.some((p) => p.startsWith(OLD_PACKAGE_NAME) || p.startsWith(NEW_PACKAGE_NAME)) + result.isInstalled = plugins.some((plugin) => plugin.startsWith(PACKAGE_NAME)) if (!result.isInstalled) { return result diff --git a/src/cli/config-manager/plugin-detection.test.ts b/src/cli/config-manager/plugin-detection.test.ts index c5a183650..6d489b385 100644 --- a/src/cli/config-manager/plugin-detection.test.ts +++ b/src/cli/config-manager/plugin-detection.test.ts @@ -7,7 +7,7 @@ import { resetConfigContext } from "./config-context" import { detectCurrentConfig } from "./detect-current-config" import { addPluginToOpenCodeConfig } from "./add-plugin-to-opencode-config" -describe("detectCurrentConfig - dual name detection", () => { +describe("detectCurrentConfig - single package detection", () => { let testConfigDir = "" let testConfigPath = "" let testOmoConfigPath = "" @@ -40,18 +40,6 @@ describe("detectCurrentConfig - dual name detection", () => { expect(result.isInstalled).toBe(true) }) - it("detects oh-my-openagent in plugin array", () => { - // given - const config = { plugin: ["oh-my-openagent"] } - writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") - - // when - const result = detectCurrentConfig() - - // then - expect(result.isInstalled).toBe(true) - }) - it("detects oh-my-opencode with version pin", () => { // given const config = { plugin: ["oh-my-opencode@3.11.0"] } @@ -64,18 +52,6 @@ describe("detectCurrentConfig - dual name detection", () => { expect(result.isInstalled).toBe(true) }) - it("detects oh-my-openagent with version pin", () => { - // given - const config = { plugin: ["oh-my-openagent@3.12.0"] } - writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") - - // when - const result = detectCurrentConfig() - - // then - expect(result.isInstalled).toBe(true) - }) - it("returns false when plugin not present", () => { // given const config = { plugin: ["some-other-plugin"] } @@ -90,7 +66,7 @@ describe("detectCurrentConfig - dual name detection", () => { it("detects OpenCode Go from the existing omo config", () => { // given - writeFileSync(testConfigPath, JSON.stringify({ plugin: ["oh-my-openagent"] }, null, 2) + "\n", "utf-8") + writeFileSync(testConfigPath, JSON.stringify({ plugin: ["oh-my-opencode"] }, null, 2) + "\n", "utf-8") writeFileSync( testOmoConfigPath, JSON.stringify({ agents: { atlas: { model: "opencode-go/kimi-k2.5" } } }, null, 2) + "\n", @@ -106,7 +82,7 @@ describe("detectCurrentConfig - dual name detection", () => { }) }) -describe("addPluginToOpenCodeConfig - dual name detection", () => { +describe("addPluginToOpenCodeConfig - single package writes", () => { let testConfigDir = "" let testConfigPath = "" @@ -125,7 +101,7 @@ describe("addPluginToOpenCodeConfig - dual name detection", () => { delete process.env.OPENCODE_CONFIG_DIR }) - it("finds and replaces old oh-my-opencode with new name", async () => { + it("keeps oh-my-opencode when it already exists", async () => { // given const config = { plugin: ["oh-my-opencode"] } writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") @@ -136,26 +112,10 @@ describe("addPluginToOpenCodeConfig - dual name detection", () => { // then expect(result.success).toBe(true) const savedConfig = JSON.parse(readFileSync(testConfigPath, "utf-8")) - expect(savedConfig.plugin).toContain("oh-my-openagent") - expect(savedConfig.plugin).not.toContain("oh-my-opencode") + expect(savedConfig.plugin).toContain("oh-my-opencode") }) - it("finds and replaces oh-my-openagent with new name", async () => { - // given - const config = { plugin: ["oh-my-openagent"] } - writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") - - // when - const result = await addPluginToOpenCodeConfig("3.11.0") - - // then - expect(result.success).toBe(true) - const savedConfig = JSON.parse(readFileSync(testConfigPath, "utf-8")) - expect(savedConfig.plugin).toContain("oh-my-openagent") - expect(savedConfig.plugin).not.toContain("oh-my-opencode") - }) - - it("finds and replaces version-pinned oh-my-opencode@X.Y.Z", async () => { + it("replaces version-pinned oh-my-opencode@X.Y.Z", async () => { // given const config = { plugin: ["oh-my-opencode@3.10.0"] } writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") @@ -166,27 +126,12 @@ describe("addPluginToOpenCodeConfig - dual name detection", () => { // then expect(result.success).toBe(true) const savedConfig = JSON.parse(readFileSync(testConfigPath, "utf-8")) - expect(savedConfig.plugin).toContain("oh-my-openagent") + expect(savedConfig.plugin).toContain("oh-my-opencode") expect(savedConfig.plugin).not.toContain("oh-my-opencode@3.10.0") }) - it("finds and replaces version-pinned oh-my-openagent@X.Y.Z", async () => { - // given - const config = { plugin: ["oh-my-openagent@3.10.0"] } - writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") - - // when - const result = await addPluginToOpenCodeConfig("3.11.0") - - // then - expect(result.success).toBe(true) - const savedConfig = JSON.parse(readFileSync(testConfigPath, "utf-8")) - expect(savedConfig.plugin).toContain("oh-my-openagent") - expect(savedConfig.plugin).not.toContain("oh-my-openagent@3.10.0") - }) - it("adds new plugin when none exists", async () => { - // given - no plugin array + // given const config = {} writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") @@ -196,11 +141,11 @@ describe("addPluginToOpenCodeConfig - dual name detection", () => { // then expect(result.success).toBe(true) const savedConfig = JSON.parse(readFileSync(testConfigPath, "utf-8")) - expect(savedConfig.plugin).toContain("oh-my-openagent") + expect(savedConfig.plugin).toContain("oh-my-opencode") }) it("adds plugin when plugin array is empty", async () => { - // given - empty plugin array + // given const config = { plugin: [] } writeFileSync(testConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8") @@ -210,6 +155,6 @@ describe("addPluginToOpenCodeConfig - dual name detection", () => { // then expect(result.success).toBe(true) const savedConfig = JSON.parse(readFileSync(testConfigPath, "utf-8")) - expect(savedConfig.plugin).toContain("oh-my-openagent") + expect(savedConfig.plugin).toContain("oh-my-opencode") }) }) diff --git a/src/cli/config-manager/plugin-name-with-version.ts b/src/cli/config-manager/plugin-name-with-version.ts index eb9a85da0..4dfa7cf6b 100644 --- a/src/cli/config-manager/plugin-name-with-version.ts +++ b/src/cli/config-manager/plugin-name-with-version.ts @@ -1,7 +1,6 @@ import { fetchNpmDistTags } from "./npm-dist-tags" const DEFAULT_PACKAGE_NAME = "oh-my-opencode" -const NEW_PACKAGE_NAME = "oh-my-openagent" const PRIORITIZED_TAGS = ["latest", "beta", "next"] as const function getFallbackEntry(version: string, packageName: string): string { @@ -17,7 +16,7 @@ export async function getPluginNameWithVersion( currentVersion: string, packageName: string = DEFAULT_PACKAGE_NAME ): Promise { - const distTags = await fetchNpmDistTags(NEW_PACKAGE_NAME) + const distTags = await fetchNpmDistTags(packageName) if (distTags) { diff --git a/src/shared/plugin-identity.test.ts b/src/shared/plugin-identity.test.ts index e727d5134..b3bd87cba 100644 --- a/src/shared/plugin-identity.test.ts +++ b/src/shared/plugin-identity.test.ts @@ -1,89 +1,48 @@ import { describe, it, expect } from "bun:test" -import { - PLUGIN_NAME, - LEGACY_PLUGIN_NAME, - CONFIG_BASENAME, - LEGACY_CONFIG_BASENAME, - LOG_FILENAME, - CACHE_DIR_NAME, - LEGACY_CACHE_DIR_NAME, -} from "./plugin-identity" +import { PLUGIN_NAME, CONFIG_BASENAME, LOG_FILENAME, CACHE_DIR_NAME } from "./plugin-identity" describe("plugin-identity constants", () => { describe("PLUGIN_NAME", () => { - it("equals oh-my-openagent", () => { - // given - - // when - - // then - expect(PLUGIN_NAME).toBe("oh-my-openagent") - }) - }) - - describe("LEGACY_PLUGIN_NAME", () => { it("equals oh-my-opencode", () => { // given // when // then - expect(LEGACY_PLUGIN_NAME).toBe("oh-my-opencode") + expect(PLUGIN_NAME).toBe("oh-my-opencode") }) }) describe("CONFIG_BASENAME", () => { - it("equals oh-my-openagent", () => { - // given - - // when - - // then - expect(CONFIG_BASENAME).toBe("oh-my-openagent") - }) - }) - - describe("LEGACY_CONFIG_BASENAME", () => { it("equals oh-my-opencode", () => { // given // when // then - expect(LEGACY_CONFIG_BASENAME).toBe("oh-my-opencode") + expect(CONFIG_BASENAME).toBe("oh-my-opencode") }) }) describe("LOG_FILENAME", () => { - it("equals oh-my-openagent.log", () => { + it("equals oh-my-opencode.log", () => { // given // when // then - expect(LOG_FILENAME).toBe("oh-my-openagent.log") + expect(LOG_FILENAME).toBe("oh-my-opencode.log") }) }) describe("CACHE_DIR_NAME", () => { - it("equals oh-my-openagent", () => { - // given - - // when - - // then - expect(CACHE_DIR_NAME).toBe("oh-my-openagent") - }) - }) - - describe("LEGACY_CACHE_DIR_NAME", () => { it("equals oh-my-opencode", () => { // given // when // then - expect(LEGACY_CACHE_DIR_NAME).toBe("oh-my-opencode") + expect(CACHE_DIR_NAME).toBe("oh-my-opencode") }) }) }) diff --git a/src/shared/plugin-identity.ts b/src/shared/plugin-identity.ts index 7a87587e0..65b190fe6 100644 --- a/src/shared/plugin-identity.ts +++ b/src/shared/plugin-identity.ts @@ -1,7 +1,4 @@ -export const PLUGIN_NAME = "oh-my-openagent" -export const LEGACY_PLUGIN_NAME = "oh-my-opencode" -export const CONFIG_BASENAME = "oh-my-openagent" -export const LEGACY_CONFIG_BASENAME = "oh-my-opencode" -export const LOG_FILENAME = "oh-my-openagent.log" -export const CACHE_DIR_NAME = "oh-my-openagent" -export const LEGACY_CACHE_DIR_NAME = "oh-my-opencode" +export const PLUGIN_NAME = "oh-my-opencode" +export const CONFIG_BASENAME = "oh-my-opencode" +export const LOG_FILENAME = "oh-my-opencode.log" +export const CACHE_DIR_NAME = "oh-my-opencode"