84 lines
4.1 KiB
Markdown
84 lines
4.1 KiB
Markdown
---
|
|
summary: 'Status tracker for post-launch refactors, shared utilities, and remaining cleanup tasks.'
|
|
read_when:
|
|
- 'Scoping engineering work beyond immediate feature changes'
|
|
---
|
|
|
|
# Next-Step Refactor Checklist
|
|
|
|
This doc tracks remaining reuse/refactor work now that the original plan is done.
|
|
Each section lists the goal, why it matters, and the concrete steps/tests needed.
|
|
|
|
## 1. Shared Tool Schema Cache _(Completed)_
|
|
|
|
- **Problem**: `generate-cli` and `emit-ts` both fetch & serialize tool schemas
|
|
independently (and `mcporter list` re-parses them too).
|
|
- **What we did**:
|
|
1. Added `src/cli/tool-cache.ts` with `loadToolMetadata()` caching tool metadata per runtime/server/options.
|
|
2. Switched `mcporter list` (single-server path) and `emit-ts` to consume the helper, so both reuse `ToolMetadata`.
|
|
3. Added `tests/tool-cache.test.ts` + updated emit-ts tests to ensure the helper is covered.
|
|
- **Next**: Consider integrating the cache into `generate-cli` if we ever reuse runtime instances there.
|
|
|
|
## 2. Unified Flag Parsing for Generator-style Commands _(Completed)_
|
|
|
|
- **Problem**: `generate-cli`, the (now legacy) `regenerate-cli` wrapper, and `emit-ts` each
|
|
reimplemented `--runtime`, `--timeout`, and `--include-optional` handling.
|
|
- **What we did**:
|
|
1. Added `extractGeneratorFlags()` in `src/cli/generate/flag-parser.ts` to
|
|
normalize shared flags while mutating `args` in place.
|
|
2. Updated all three commands to call the helper before parsing
|
|
command-specific options.
|
|
3. Added `tests/generator-flag-parser.test.ts` to cover runtime/timeout and
|
|
optional flags.
|
|
|
|
## 3. Test Fixture Reuse _(Completed)_
|
|
|
|
- **Problem**: Emit-ts/tool-cache/unit tests each defined their own tool/definition
|
|
fixtures, leading to divergence.
|
|
- **What we did**:
|
|
1. Added `tests/fixtures/tool-fixtures.ts` (shared definition + tools).
|
|
2. Updated `tests/emit-ts.test.ts` and `tests/tool-cache.test.ts` to import
|
|
the shared fixtures (and reuse them via `buildToolMetadata`).
|
|
3. Ensured the fixture covers required+optional parameters so both suites hit
|
|
the same edge cases.
|
|
|
|
## 4. CallResult Helper Extraction _(Completed)_
|
|
|
|
- **Problem**: `call-command.ts` and the emit-ts client template both wrapped
|
|
results with `createCallResult`, but there was no shared helper.
|
|
- **What we did**:
|
|
1. Added `wrapCallResult()` to `result-utils.ts` and exported it from the
|
|
package entry.
|
|
2. Updated `call-command.ts` and the emit-ts template to reuse the helper so
|
|
they stay in sync.
|
|
3. Adjusted emit-ts tests to assert the helper is referenced.
|
|
|
|
## 5. CLI Docs Consolidation _(Completed)_
|
|
|
|
- **Problem**: CLI usage guidance was scattered across README, `docs/spec.md`,
|
|
and various feature docs.
|
|
- **What we did**:
|
|
1. Added `docs/cli-reference.md` summarizing `list`, `call`, `generate-cli`,
|
|
and `emit-ts` flags/modes in one place.
|
|
2. Pointed emit-ts users to that doc so we can converge other references over
|
|
time (no README/spec churn yet to avoid clobbering parallel work).
|
|
- **Next**: Once the other doc changes land, update README/spec to link to the
|
|
reference and drop redundant sections.
|
|
|
|
## 6. Runtime Module Split _(Completed)_
|
|
|
|
- **Problem**: `src/runtime.ts` had grown bulky (600+ lines) mixing transport setup, OAuth flow control, and small helpers, making tests and reuse harder.
|
|
- **What we did**:
|
|
1. Extracted transport construction/retry logic to `src/runtime/transport.ts`.
|
|
2. Moved OAuth helpers (timeouts, connect retry, errors) to `src/runtime/oauth.ts` and centralized env-parsed timeouts.
|
|
3. Pulled argument/timeout utilities into `src/runtime/utils.ts`.
|
|
4. Made reset-policy logic reusable via `src/runtime/errors.ts`.
|
|
5. Switched tests to import helpers directly instead of using `runtime.__test`.
|
|
6. Added a targeted transport test to cover SSE fallback and OAuth promotion.
|
|
- **Next**: Keep new helpers in sync as runtime evolves; prefer adding surface to these modules over growing `runtime.ts` again.
|
|
|
|
---
|
|
|
|
Tracking the above here keeps future agents aligned. Update this checklist as
|
|
items ship (mark sections “Completed” when done, or delete the doc once empty).
|