Skip to content

v0.14.14 - Preset groups + true parallel ref fan-out

Latest

Choose a tag to compare

@DDL095 DDL095 released this 19 Jul 07:07

🎁 Preset groups + true parallel ref fan-out

Two long-requested features in one release. Both are fully backward-compatible β€” existing v0.14.13 configs continue to work and are auto-migrated on first use.


1. Preset groups (moa.presets + moa.activePreset)

Save multiple full-pipeline configurations as named presets and switch between them with one click. Each preset bundles refs + aggregator + recon + L3 β€” switching a preset swaps the entire pipeline.

New settings:

  • moa.presets (object): Map of { name β†’ { refModels, aggregator, reconModel, l3Summarizer, description? } }
  • moa.activePreset (string): Key into moa.presets for the currently active group

New commands:

  • MoA: Switch Preset β€” QuickPick showing all saved presets with a one-line preview (4 refs Β· agg=GLM-5.2 Β· recon=DeepSeek Β· L3=MiniMax-M3). One-click switch, no re-configuration needed.
  • MoA: Configure Models (updated) β€” Now opens with a new Step 0/4 to pick / create / delete a preset group before editing. Steps 1-4 then edit the selected preset.

Backward compatibility:

  • Legacy flat config (moa.refModels + moa.aggregator + ...) is auto-migrated to presets.default on extension activation (idempotent).
  • Migration shows a one-time notification; legacy fields are NOT deleted (kept as read-only fallback).
  • Runtime reads go through a new single-source-of-truth function getActivePresetConfig() in presetConfig.ts, used by both moaRunner.ts and moaOrchestrator.ts.

Typical usage:

  • "code" preset: 4 refs + GLM aggregator + DeepSeek recon + MiniMax L3
  • "research" preset: 6 refs + MiniMax aggregator + GLM recon + L3 disabled
  • "quick" preset: 2 refs + GLM aggregator (no recon, no L3)

2. Real parallel ref fan-out (moa.parallelRefs)

Bug: The moa.parallelRefs setting has existed since v0.7.x and was documented as "Fan out reference advisors in parallel", but the code never read it β€” refs always ran sequentially. Setting parallelRefs: true had no effect.

Fix: Extracted ref execution into a new helper runSingleRef() (atomic, never throws) and the ref prompt body into buildRefPromptBody() (built once, shared by all refs since equal-mode MoA). The Phase 1 loop now has two branches:

  • parallelRefs: true (new default) β€” Promise.allSettled(tasks.map(runSingleRef)). All ref requests fire simultaneously; wall-clock = slowest ref. N refs β†’ theoretical NΓ— speedup. Individual failures don't affect siblings.
  • parallelRefs: false β€” sequential for-await (legacy behavior). Use this if your provider rate-limits concurrent requests.

Default change: moa.parallelRefs default flipped false β†’ true. If you experience cascading 429/5xx errors, set it back to false.


Files changed

File Change
NEW src/presetConfig.ts (~400 LOC) MoaPreset lifecycle β€” getActivePresetConfig(), migrateLegacyToPreset(), savePreset(), deletePreset(), setActivePreset(), listPresets()
NEW src/types.ts MoaPreset interface
src/moaRunner.ts runSingleRef() + buildRefPromptBody() helpers; parallel/serial Phase 1 branches; preset reads
src/moaConfig.ts pickOrCreatePreset() Step 0 UI; switchPreset() command
src/moaOrchestrator.ts resolveModels() uses getActivePresetConfig()
src/l3Summarizer.ts L3 model ID from preset
src/extension.ts Registers moa.switchPreset; auto-migration on activate
package.json 2 new settings + 1 new command + version bump + parallelRefs default flip
README.md 5-step flow, Preset groups section, parallelRefs default = true
CHANGELOG.md v0.14.14 entry
.vscodeignore Exclude build artifacts (tsc_output.txt, *.bak, eslint.config.mjs, etc.)

Install

From Marketplace (recommended):

code --install-extension dudali095.moa-bridge

From this release:
Download moa-bridge-0.14.14.vsix below, then:

code --install-extension moa-bridge-0.14.14.vsix

After install, reload VSCode. If you had a previous MoA config, you'll see a one-time notification that it was migrated to the default preset group.

Full changelog

See CHANGELOG.md for the complete history.