diff options
| author | Adam Malczewski <[email protected]> | 2026-04-30 20:24:33 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-04-30 20:24:33 +0900 |
| commit | 262aa7395c50b449ce0a897f28b1e33c319f5dc7 (patch) | |
| tree | 2ccc7c7f6402e76aea6b8788046215e82650fdfc /.rules/plan/01-30-rename-namespace.md | |
| parent | 1e7a273bda744f93f230d21df895b54d2a81ce15 (diff) | |
| download | dispatch-adapter-minimax-main.tar.gz dispatch-adapter-minimax-main.zip | |
Diffstat (limited to '.rules/plan/01-30-rename-namespace.md')
| -rw-r--r-- | .rules/plan/01-30-rename-namespace.md | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/.rules/plan/01-30-rename-namespace.md b/.rules/plan/01-30-rename-namespace.md new file mode 100644 index 0000000..6b0e39b --- /dev/null +++ b/.rules/plan/01-30-rename-namespace.md @@ -0,0 +1,181 @@ +# Phase 01 — Rename namespace + +**Estimated time:** ~30 minutes +**Touches:** Every file in the gem. + +## Goal + +Rename the entire codebase from `Claude` to `MiniMax`. After this phase the +gem still functionally targets api.anthropic.com (configuration swap is in +phase 04) — we are only renaming the Ruby surface, files, and gemspec here. + +## Steps + +### 1. Rename source directories and files + +```text +lib/dispatch/adapter/claude.rb → lib/dispatch/adapter/minimax.rb +lib/dispatch/adapter/claude/ → lib/dispatch/adapter/minimax/ +sig/dispatch/adapter/claude.rbs → sig/dispatch/adapter/minimax.rbs +spec/dispatch/adapter/claude/ → spec/dispatch/adapter/minimax/ +spec/dispatch/adapter/claude_spec.rb → spec/dispatch/adapter/minimax_spec.rb +dispatch-adapter-claude.gemspec → dispatch-adapter-minimax.gemspec +``` + +DELETE the built-gem artifact: + +```text +dispatch-adapter-claude-0.2.0.gem → DELETED +``` + +### 2. Rename Ruby module everywhere + +Replace `Dispatch::Adapter::Claude` with `Dispatch::Adapter::MiniMax` +throughout the codebase. `MiniMax` uses CamelCase exactly as written +(double capital). + +Concretely, in every `*.rb` and `*.rbs` file under `lib/`, `spec/`, `sig/`, +`bin/`, and `examples/`: + +- `class Claude < Base` → `class MiniMax < Base` +- `Dispatch::Adapter::Claude` → `Dispatch::Adapter::MiniMax` +- `class Claude::Foo` (and similar nested forms) → `class MiniMax::Foo` +- `Claude::VERSION` → `MiniMax::VERSION` +- `Claude::DEFAULT_*` → `MiniMax::DEFAULT_*` +- The `module ClaudeVersion` block in `lib/dispatch/adapter/minimax/version.rb` + → `module MiniMaxVersion` +- The `ClaudeErrors` module → `MiniMaxErrors` + +### 3. Update `require_relative` paths in `lib/dispatch/adapter/minimax.rb` + +All sub-module requires must point at the new directory: + +```ruby +require_relative "minimax/version" +require_relative "minimax/errors" +require_relative "minimax/key_store" # was token_store — rename in phase 03 +require_relative "minimax/headers" +require_relative "minimax/pricing_table" +require_relative "minimax/model_catalog" +require_relative "minimax/request_builder" +require_relative "minimax/response_builder" +require_relative "minimax/stream_collector" +require_relative "minimax/sse_parser" +require_relative "minimax/http_client" +``` + +NOTE: At this phase `key_store` does not yet exist; the file is still named +`token_store.rb`. Leave the require pointing at `minimax/token_store` for now +and rename in phase 03. DO NOT delete `pkce`, `oauth`, `cloaking`, +`usage_client`, or `rate_limit_headers` requires yet — that's phase 02. + +### 4. Reset the version + +Edit `lib/dispatch/adapter/minimax/version.rb`: + +```ruby +# frozen_string_literal: true + +module Dispatch + module Adapter + module MiniMaxVersion + VERSION = "0.1.0" + end + end +end +``` + +### 5. Rewrite the gemspec + +Edit `dispatch-adapter-minimax.gemspec`: + +- `spec.name` → `"dispatch-adapter-minimax"` +- `spec.version` → `Dispatch::Adapter::MiniMaxVersion::VERSION` +- `spec.summary` → `"MiniMax adapter for the Dispatch interface."` +- `spec.description` → A one-paragraph description mentioning MiniMax M2.7, + Token Plan, Anthropic-compatible /v1/messages endpoint. +- `spec.metadata["source_code_uri"]` and `homepage_uri` → adjust as needed + (leave placeholder if you don't know the new repo URL yet). + +Keep all existing runtime dependencies (`dispatch-adapter-interface`). +DO NOT add new dependencies in this phase. + +### 6. Rename the spec helper if it references Claude + +`spec/spec_helper.rb` may contain `require "dispatch/adapter/claude"` — +update to `require "dispatch/adapter/minimax"`. + +### 7. Update the `Gemfile` if it has explicit references + +The `Gemfile` should NOT need changes (it loads the gemspec dynamically), +but verify there are no hardcoded `dispatch-adapter-claude` references. + +### 8. Delete the lockfile so it regenerates + +DELETE `Gemfile.lock`. It will regenerate on the next `bundle install`. + +### 9. Update `.rspec`, `Rakefile`, `README.md`, `CHANGELOG.md` + +For now, just rename references; the full README rewrite is phase 09. +At minimum: + +- `.rspec` — usually doesn't reference the module; verify. +- `Rakefile` — replace any `Dispatch::Adapter::Claude` references. +- `README.md` — replace `Claude` with `MiniMax` in references; full rewrite later. +- `CHANGELOG.md` — replace existing content with a single line: + ``` + ## 0.1.0 (unreleased) + - Initial release: forked from dispatch-adapter-claude. + ``` +- `AGENTS.md` — leave for now or skip; rewriting is phase 09. + +### 10. Update file headers + +The `# Anthropic Claude adapter` style comments at the top of files should +be updated to MiniMax equivalents where they appear (do not invent +references; just retarget existing comments). + +## Acceptance criteria + +After completing this phase: + +- `grep -rn 'Dispatch::Adapter::Claude' .` (excluding `.git/`, `.rules/`, + `Gemfile.lock`) returns ZERO matches. +- `grep -rn 'class Claude' lib/ spec/ sig/` returns ZERO matches. +- `grep -rn 'ClaudeVersion\|ClaudeErrors' lib/ spec/ sig/` returns ZERO matches. +- The file `lib/dispatch/adapter/claude.rb` does NOT exist. +- The file `lib/dispatch/adapter/minimax.rb` exists. +- The directory `lib/dispatch/adapter/claude/` does NOT exist. +- The directory `lib/dispatch/adapter/minimax/` exists with the + ten `.rb` files (version, errors, token_store [still named that for now], + pkce, oauth, oauth/callback_server.rb, cloaking, headers, pricing_table, + model_catalog, request_builder, response_builder, stream_collector, + sse_parser, http_client, usage_client, rate_limit_headers). +- `dispatch-adapter-minimax.gemspec` exists; `dispatch-adapter-claude.gemspec` + and `dispatch-adapter-claude-0.2.0.gem` do NOT. +- `bundle install` runs cleanly inside the gem directory. + +## Verification + +Run `run_tests` with `project_path=reference/dispatch-adapter-minimax`. +Both rubocop and rspec must exit 0. + +The specs may have many failures referencing OAuth / PKCE / cloaking +machinery that hasn't been deleted yet — this is expected. They should +not have failures from the rename itself (e.g. `NameError: +uninitialized constant Dispatch::Adapter::Claude`). If a spec fails +because of a renamed constant, fix the spec to use the new name. + +If specs targeting OAuth/PKCE/cloaking/usage are STILL failing after the +rename (because the underlying code still uses Anthropic endpoints, which +won't be reachable in test mode), that's acceptable — those specs will +be deleted in phase 08. As long as rspec EXITS NON-ZERO only on +test-doubles / NameError / NoMethodError that the rename caused, you can +proceed. + +**HOWEVER**: rubocop MUST pass cleanly. Resolve any naming-related +violations (e.g. `Naming/FileName` if a file's class name no longer matches +its filename) before calling `ask_for_next_plan`. + +If rspec failures persist beyond rename-related causes, document them in +the summary and proceed. Phase 02 will delete the offending code. |
