@jmanuelcorral/openteam 0.14.0 → 0.15.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.
package/README.es.md CHANGED
@@ -218,7 +218,7 @@ openteam setup
218
218
  El asistente:
219
219
 
220
220
  1. Sondea los runtimes locales y marca los detectados.
221
- 2. Te deja habilitar runtimes (o **ninguno**: puedes usar openteam **solo con modelos frontier**) y, por cada runtime que habilites, elegir si corre **en esta máquina** o **en otra máquina de la red local** (introduciendo su URL, p. ej. `http://192.168.1.50:11434/v1`); luego eliges el modelo por defecto de cada uno (o lo escribes si no se detectan modelos).
221
+ 2. Te deja habilitar runtimes (o **ninguno**: puedes usar openteam **solo con modelos frontier**) y, por cada runtime que habilites, elegir si corre **en esta máquina** o **en otra máquina de la red local** (introduciendo su URL, p. ej. `http://192.168.1.50:11434/v1`); luego eliges el modelo por defecto de cada uno (o lo escribes si no se detectan modelos). Si tienes **más de una máquina del mismo tipo** (p. ej. dos hosts LM Studio), declara cada una como una instancia aparte con su propio id (`lmstudio-a`, `lmstudio-b`), URL y modelos. Para cada instancia también pregunta cuántos **slots de generación concurrente** tiene el runtime (por defecto `4`), para que puedas dejar un slot libre para el trabajo interactivo en vez de saturar el servidor.
222
222
  3. Ofrece el modelo frontier baseline a partir del **catálogo completo de [Models.dev](https://models.dev)** que openteam ya integra: una lista rápida con los más **baratos-capaces primero** (incluidos los **gratuitos**, etiquetados como `gratis`), una opción **«Ver todos los modelos por proveedor…»** para navegar el catálogo completo, y **«Otro (custom)»** para escribir un `provider/model`. Si el catálogo no se puede cargar (offline), cae a la lista curada.
223
223
  4. Pregunta el modo de routing (`balanced`/`economy`/`quality`), la política de privacidad y si quieres activar el **modo YOLO** (auto-aprobar permisos de opencode). Si no habilitas ningún runtime local, avisa de que estás en **modo solo frontier** y recomienda `consentBeforeFrontier` (porque `forceLocalOnSensitive` no tendría destino local).
224
224
  5. Si ya existe `opencode.json` o `.opencode/openteam.json`, pide confirmación antes de sobrescribir.
@@ -824,7 +824,7 @@ Consulta [docs/compatibility.md](docs/compatibility.md). Resumen verificado el `
824
824
 
825
825
  | Superficie | Versión / contrato |
826
826
  | --- | --- |
827
- | openteam | `0.14.0`; versión actual del paquete |
827
+ | openteam | `0.15.0`; versión actual del paquete |
828
828
  | `@opencode-ai/plugin` | `1.18.19` |
829
829
  | `@opencode-ai/sdk` | `1.18.19` |
830
830
  | Hook de routing | `chat.message`; no `chat.params` para cambiar modelo |
package/README.md CHANGED
@@ -177,7 +177,7 @@ openteam setup
177
177
  The wizard:
178
178
 
179
179
  1. Probes local runtimes and marks the detected ones.
180
- 2. Lets you enable runtimes (or **none** — frontier-only) and, per enabled runtime, choose whether it runs **on this machine** or **on another machine on the LAN** (by entering its URL, e.g. `http://192.168.1.50:11434/v1`), then pick each default model.
180
+ 2. Lets you enable runtimes (or **none** — frontier-only) and, per enabled runtime, choose whether it runs **on this machine** or **on another machine on the LAN** (by entering its URL, e.g. `http://192.168.1.50:11434/v1`), then pick each default model. If you run **more than one machine of the same kind** (e.g. two LM Studio hosts), it declares each as a separate instance with its own id (`lmstudio-a`, `lmstudio-b`), URL and models. For every instance it also asks how many **concurrent generation slots** the runtime has (defaulting to `4`), so you can leave a slot free for interactive work instead of saturating the server.
181
181
  3. Offers the frontier baseline from the **full [Models.dev](https://models.dev) catalog** that openteam integrates: a quick list with the **cheapest-capable first** (including **free** models, tagged `free`), a "Browse all models by provider…" option, and "Other (custom)" to type a `provider/model`. If the catalog can't be loaded (offline), it falls back to the curated list.
182
182
  4. Asks for the routing mode (`balanced` / `economy` / `quality`), the privacy policy, and whether to enable **YOLO mode** (auto-approve opencode permissions). If you enable no local runtime, it warns you are in **frontier-only mode** and recommends `consentBeforeFrontier`.
183
183
  5. If `opencode.json` or `.opencode/openteam.json` already exist, it asks for confirmation before overwriting.
@@ -713,7 +713,7 @@ See [docs/compatibility.md](docs/compatibility.md). Verified summary as of `2026
713
713
 
714
714
  | Surface | Version / contract |
715
715
  | --- | --- |
716
- | openteam | `0.14.0`; current package version |
716
+ | openteam | `0.15.0`; current package version |
717
717
  | `@opencode-ai/plugin` | `1.18.19` |
718
718
  | `@opencode-ai/sdk` | `1.18.19` |
719
719
  | Routing hook | `chat.message`; not `chat.params` for model changes |
package/dist/cli.js CHANGED
@@ -1568,7 +1568,7 @@ function runtimeIdOfModel(model, config) {
1568
1568
  }
1569
1569
  function roleLocalModel(role, runtimeId, fallback) {
1570
1570
  const pinned = role.localModels?.[runtimeId];
1571
- return pinned === undefined ? fallback : { providerID: runtimeId, modelID: pinned };
1571
+ return pinned === undefined ? fallback : { ...fallback, modelID: pinned };
1572
1572
  }
1573
1573
  function selectDispatchRuntime(role, decision2, reachable, config) {
1574
1574
  if (decision2.routeKind !== "local") {
@@ -3358,9 +3358,9 @@ async function loadRuntimeOpenTeamConfig(storage, options, path = DEFAULT_CONFIG
3358
3358
  }
3359
3359
  const configOptions = configOptionsFromPluginOptions(options);
3360
3360
  const optionsFound = configOptions !== undefined;
3361
- const overlayContent = await storage.read(overlayPath);
3361
+ const overlayContent = overlayPath === null ? undefined : await storage.read(overlayPath);
3362
3362
  const overlayFound = overlayContent !== undefined;
3363
- const overlayRaw = overlayFound ? parseConfigFileJson(overlayPath, overlayContent) : undefined;
3363
+ const overlayRaw = overlayFound && overlayPath !== null ? parseConfigFileJson(overlayPath, overlayContent) : undefined;
3364
3364
  const mergedRaw = mergeConfigInputs(mergeConfigInputs(fileRaw, configOptions), overlayRaw);
3365
3365
  const mergedSources = [
3366
3366
  fileFound ? path : undefined,
@@ -3376,7 +3376,7 @@ async function loadRuntimeOpenTeamConfig(storage, options, path = DEFAULT_CONFIG
3376
3376
  fileFound,
3377
3377
  optionsFound,
3378
3378
  overlayFound,
3379
- searchedPaths: [path, overlayPath]
3379
+ searchedPaths: overlayPath === null ? [path] : [path, overlayPath]
3380
3380
  };
3381
3381
  }
3382
3382
 
@@ -11635,23 +11635,38 @@ function knownRuntime(id) {
11635
11635
  function firstEnabled(runtimes) {
11636
11636
  return runtimes.find((runtime) => runtime.enabled);
11637
11637
  }
11638
+ function choiceKind(choice) {
11639
+ return choice.kind ?? choice.id;
11640
+ }
11641
+ function choiceProviderID(choice) {
11642
+ return choice.providerID ?? choice.id;
11643
+ }
11638
11644
  function buildOpenTeamConfig(answers) {
11639
11645
  const runtimes = answers.runtimes.filter((choice) => choice.enabled).map((choice) => {
11640
11646
  const runtime = {
11641
11647
  id: choice.id,
11642
11648
  enabled: choice.enabled,
11643
- defaultModel: { providerID: choice.id, modelID: choice.defaultModelID },
11649
+ defaultModel: {
11650
+ providerID: choiceProviderID(choice),
11651
+ modelID: choice.defaultModelID
11652
+ },
11644
11653
  maxConcurrency: choice.maxConcurrency ?? DEFAULT_LOCAL_MAX_CONCURRENCY
11645
11654
  };
11655
+ if (choice.kind !== undefined && choice.kind !== choice.id) {
11656
+ runtime.kind = choice.kind;
11657
+ }
11646
11658
  if (choice.baseURL !== undefined) {
11647
11659
  runtime.baseURL = choice.baseURL;
11648
- } else if (knownRuntime(choice.id).dynamicPort === true) {
11660
+ } else if (knownRuntime(choiceKind(choice)).dynamicPort === true) {
11649
11661
  runtime.discovery = "cli";
11650
11662
  }
11651
11663
  return runtime;
11652
11664
  });
11653
11665
  const primaryLocal = firstEnabled(answers.runtimes);
11654
- const localDefault2 = primaryLocal !== undefined ? { providerID: primaryLocal.id, modelID: primaryLocal.defaultModelID } : null;
11666
+ const localDefault2 = primaryLocal !== undefined ? {
11667
+ providerID: choiceProviderID(primaryLocal),
11668
+ modelID: primaryLocal.defaultModelID
11669
+ } : null;
11655
11670
  const localOnly = answers.localOnly === true && primaryLocal !== undefined;
11656
11671
  return OpenTeamConfigSchema.parse({
11657
11672
  baseline: {
@@ -11672,11 +11687,12 @@ function buildOpenTeamConfig(answers) {
11672
11687
  }
11673
11688
  function buildOpencodeConfig(answers) {
11674
11689
  const provider = {};
11690
+ const providerOwner = new Map;
11675
11691
  for (const choice of answers.runtimes) {
11676
11692
  if (!choice.enabled) {
11677
11693
  continue;
11678
11694
  }
11679
- const meta = knownRuntime(choice.id);
11695
+ const meta = knownRuntime(choiceKind(choice));
11680
11696
  const baseURL = choice.baseURL ?? meta.defaultBaseURL;
11681
11697
  if (baseURL === undefined) {
11682
11698
  continue;
@@ -11686,16 +11702,33 @@ function buildOpencodeConfig(answers) {
11686
11702
  for (const modelID of modelIDs) {
11687
11703
  models[modelID] = { name: modelID };
11688
11704
  }
11689
- provider[choice.id] = {
11705
+ const providerID = choiceProviderID(choice);
11706
+ const owner = providerOwner.get(providerID);
11707
+ if (owner !== undefined) {
11708
+ if (owner.baseURL !== baseURL) {
11709
+ throw new Error(`local runtimes "${owner.instanceId}" and "${choice.id}" both use ` + `opencode provider "${providerID}" but declare different baseURLs ` + `(${owner.baseURL} vs ${baseURL}); give each instance a distinct ` + "providerID so opencode can reach both machines.");
11710
+ }
11711
+ const existing = provider[providerID];
11712
+ if (existing !== undefined) {
11713
+ provider[providerID] = {
11714
+ ...existing,
11715
+ models: { ...existing.models, ...models }
11716
+ };
11717
+ }
11718
+ continue;
11719
+ }
11720
+ const name = choice.id === choiceKind(choice) ? `${meta.label} (local)` : `${meta.label} (local · ${choice.id})`;
11721
+ provider[providerID] = {
11690
11722
  npm: "@ai-sdk/openai-compatible",
11691
- name: `${meta.label} (local)`,
11723
+ name,
11692
11724
  options: { baseURL },
11693
11725
  models
11694
11726
  };
11727
+ providerOwner.set(providerID, { instanceId: choice.id, baseURL });
11695
11728
  }
11696
11729
  const primaryLocal = firstEnabled(answers.runtimes);
11697
11730
  const localOnly = answers.localOnly === true && primaryLocal !== undefined;
11698
- const mainModel = localOnly && primaryLocal !== undefined ? `${primaryLocal.id}/${primaryLocal.defaultModelID}` : `${answers.frontier.providerID}/${answers.frontier.modelID}`;
11731
+ const mainModel = localOnly && primaryLocal !== undefined ? `${choiceProviderID(primaryLocal)}/${primaryLocal.defaultModelID}` : `${answers.frontier.providerID}/${answers.frontier.modelID}`;
11699
11732
  const config = {
11700
11733
  $schema: "https://opencode.ai/config.json",
11701
11734
  plugin: [OPENTEAM_PLUGIN_SPEC],
@@ -11705,7 +11738,7 @@ function buildOpencodeConfig(answers) {
11705
11738
  config.provider = provider;
11706
11739
  }
11707
11740
  if (primaryLocal !== undefined) {
11708
- config.small_model = `${primaryLocal.id}/${primaryLocal.defaultModelID}`;
11741
+ config.small_model = `${choiceProviderID(primaryLocal)}/${primaryLocal.defaultModelID}`;
11709
11742
  }
11710
11743
  if (answers.yolo) {
11711
11744
  config.permission = { "*": "allow" };
@@ -11910,6 +11943,62 @@ async function resolveEnabledRuntime(deps, meta, info) {
11910
11943
  }
11911
11944
  return choice;
11912
11945
  }
11946
+ function instanceSuffix(index) {
11947
+ return index < 26 ? String.fromCharCode(97 + index) : String(index + 1);
11948
+ }
11949
+ async function promptSlotCount(prompt, meta) {
11950
+ const raw = await prompt.text({
11951
+ message: `How many concurrent generation slots does ${meta.label} have? (match its real capacity; leaving one free keeps interactive work responsive)`,
11952
+ placeholder: String(DEFAULT_LOCAL_MAX_CONCURRENCY),
11953
+ initial: String(DEFAULT_LOCAL_MAX_CONCURRENCY)
11954
+ });
11955
+ const parsed = Number.parseInt(raw.trim(), 10);
11956
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : DEFAULT_LOCAL_MAX_CONCURRENCY;
11957
+ }
11958
+ async function promptInstanceId(prompt, meta, defaultId, usedIds) {
11959
+ for (;; ) {
11960
+ const raw = await prompt.text({
11961
+ message: `Instance id for this ${meta.label} machine (unique across your fleet)`,
11962
+ placeholder: defaultId,
11963
+ initial: defaultId
11964
+ });
11965
+ const id = raw.trim().length > 0 ? raw.trim() : defaultId;
11966
+ if (!usedIds.has(id)) {
11967
+ return id;
11968
+ }
11969
+ prompt.note(`Instance id "${id}" is already used; enter a different one.`, "Duplicate instance id");
11970
+ }
11971
+ }
11972
+ async function resolveRuntimeInstances(deps, meta, info, usedIds) {
11973
+ const fleet = await deps.prompt.confirm({
11974
+ message: `Do you run more than one ${meta.label} machine? (declare each host with its own URL and slot count)`,
11975
+ initial: false
11976
+ });
11977
+ if (!fleet) {
11978
+ const choice = await resolveEnabledRuntime(deps, meta, info);
11979
+ choice.maxConcurrency = await promptSlotCount(deps.prompt, meta);
11980
+ usedIds.add(choice.id);
11981
+ return [choice];
11982
+ }
11983
+ const instances = [];
11984
+ for (;; ) {
11985
+ const defaultId = `${meta.id}-${instanceSuffix(instances.length)}`;
11986
+ const id = await promptInstanceId(deps.prompt, meta, defaultId, usedIds);
11987
+ const choice = await resolveEnabledRuntime(deps, meta, info);
11988
+ choice.id = id;
11989
+ choice.kind = meta.id;
11990
+ choice.maxConcurrency = await promptSlotCount(deps.prompt, meta);
11991
+ usedIds.add(id);
11992
+ instances.push(choice);
11993
+ const another = await deps.prompt.confirm({
11994
+ message: `Add another ${meta.label} machine?`,
11995
+ initial: false
11996
+ });
11997
+ if (!another) {
11998
+ return instances;
11999
+ }
12000
+ }
12001
+ }
11913
12002
  async function runSetup(deps) {
11914
12003
  const { prompt } = deps;
11915
12004
  try {
@@ -11937,6 +12026,7 @@ async function runSetup(deps) {
11937
12026
  });
11938
12027
  const enabled = new Set(enabledIds.filter((id) => id !== RUNTIME_NONE));
11939
12028
  const runtimes = [];
12029
+ const usedIds = new Set;
11940
12030
  for (const meta of KNOWN_RUNTIMES) {
11941
12031
  const info = detectedById.get(meta.id);
11942
12032
  const isEnabled = enabled.has(meta.id);
@@ -11954,7 +12044,7 @@ async function runSetup(deps) {
11954
12044
  runtimes.push(choice);
11955
12045
  continue;
11956
12046
  }
11957
- runtimes.push(await resolveEnabledRuntime(deps, meta, info));
12047
+ runtimes.push(...await resolveRuntimeInstances(deps, meta, info, usedIds));
11958
12048
  }
11959
12049
  const hasLocalEnabled = enabled.size > 0;
11960
12050
  const localOnly = hasLocalEnabled ? await prompt.confirm({
@@ -15685,7 +15775,7 @@ async function buildMemoryRuntimeFromConfig(config, deps, options = {}) {
15685
15775
  // package.json
15686
15776
  var package_default = {
15687
15777
  name: "@jmanuelcorral/openteam",
15688
- version: "0.14.0",
15778
+ version: "0.15.0",
15689
15779
  packageManager: "bun@1.3.14",
15690
15780
  description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
15691
15781
  license: "MIT",
@@ -15857,12 +15947,12 @@ async function readConfigFile(path4, resolution) {
15857
15947
  }
15858
15948
  }
15859
15949
  async function loadConfig(path4, resolution = { explicit: false }) {
15860
- const content = await readConfigFile(path4, resolution);
15861
- if (content === undefined) {
15862
- return loadOpenTeamConfig({});
15863
- }
15864
- const raw = parseConfigFileJson(path4, content);
15865
- return validateConfigFile(path4, raw);
15950
+ const configStorage = resolution.explicit ? {
15951
+ ...storage,
15952
+ read: (requestedPath) => requestedPath === path4 ? readConfigFile(path4, resolution) : storage.read(requestedPath)
15953
+ } : storage;
15954
+ const overlayPath = resolution.explicit ? null : DEFAULT_LOCAL_OVERLAY_PATH;
15955
+ return (await loadRuntimeOpenTeamConfig(configStorage, undefined, path4, overlayPath)).config;
15866
15956
  }
15867
15957
  async function saveConfig(config, path4, resolution = { explicit: false }) {
15868
15958
  if (!resolution.explicit) {
@@ -1,6 +1,6 @@
1
1
  import type { ModelCapabilityProfile } from "../capabilities/types";
2
2
  import { type OpenTeamConfig, type PrivacyMode, type RouterMode } from "../config/schema";
3
- import type { LocalRuntimeId } from "../local/types";
3
+ import type { LocalRuntimeId, LocalRuntimeKind } from "../local/types";
4
4
  import type { CliResult } from "./dispatch";
5
5
  import { type FrontierChoice as FrontierChoiceType } from "./frontierCatalog";
6
6
  /** Nombre del paquete npm del plugin, declarado en el opencode.json generado. */
@@ -73,7 +73,7 @@ export declare function buildOpencodeGitignore(existing?: string): string;
73
73
  */
74
74
  export declare function missingGeneratedStateRules(gitignore: string): string[];
75
75
  export type KnownRuntime = {
76
- id: LocalRuntimeId;
76
+ id: LocalRuntimeKind;
77
77
  label: string;
78
78
  defaultBaseURL?: string;
79
79
  fallbackModelID: string;
@@ -93,16 +93,36 @@ export type DetectedRuntime = {
93
93
  };
94
94
  export type RuntimeChoice = {
95
95
  id: LocalRuntimeId;
96
+ /**
97
+ * Adapter kind of this instance (#214/#217). Optional so pre-fleet
98
+ * construction sites (where the id IS the kind) stay valid; when absent the
99
+ * id is treated as the kind. `buildOpenTeamConfig` emits an explicit `kind`
100
+ * only when it differs from the instance id, keeping single-instance output
101
+ * byte-identical.
102
+ */
103
+ kind?: LocalRuntimeKind;
104
+ /**
105
+ * opencode provider this instance's model resolves against (#216/#217).
106
+ * Optional and defaults to the instance `id`, never the kind: opencode holds a
107
+ * single `baseURL` per provider entry, so two same-kind hosts must resolve to
108
+ * two distinct providers or the fleet silently collapses onto one machine. For
109
+ * a single-instance install id == kind, so the default keeps output
110
+ * byte-identical. Kept separately settable for the rare case where two
111
+ * instances genuinely share one endpoint.
112
+ */
113
+ providerID?: string;
96
114
  enabled: boolean;
97
115
  baseURL?: string;
98
116
  defaultModelID: string;
99
117
  models: string[];
100
118
  /**
101
- * Concurrent generation slots this runtime really has (#144/#207). Optional on
102
- * the answer so existing construction sites stay valid; `buildOpenTeamConfig`
103
- * falls back to `DEFAULT_LOCAL_MAX_CONCURRENCY` and always writes the resolved
104
- * value, so the cap in force is visible in the generated file instead of being
105
- * an invisible read-time default nobody knows to override.
119
+ * Concurrent generation slots this runtime really has (#144/#207/#217).
120
+ * Elicited per instance by the wizard (gap #217 was that it never asked).
121
+ * Optional on the answer so existing construction sites stay valid;
122
+ * `buildOpenTeamConfig` falls back to `DEFAULT_LOCAL_MAX_CONCURRENCY` and
123
+ * always writes the resolved value, so the cap in force is visible in the
124
+ * generated file instead of being an invisible read-time default nobody knows
125
+ * to override.
106
126
  */
107
127
  maxConcurrency?: number;
108
128
  };
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAMpE,OAAO,EAOL,KAAK,cAAc,EAEnB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAcrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,KAAK,cAAc,IAAI,kBAAkB,EAK1C,MAAM,mBAAmB,CAAC;AAE3B,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,wQAOjC,CAAC;AAwEX,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AA6BF;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,EAAE,CAoBrD;AAkCD,eAAO,MAAM,wCAAwC,EAAE,SAAS,MAAM,EACP,CAAC;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,YAAI,WAAW,CAAU,CAAC;AAE5E;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,YAChD,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,CACtB,CAAC;AAMX,wBAAgB,sBAAsB,CAAC,QAAQ,SAAK,GAAG,MAAM,CAoC5D;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAKtE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAyBjD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,cAAc,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAgB3B;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CAmDzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,cAAc,CA4DzE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAEtE;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,CAAC;KACb,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACf;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACf,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACzC;;;;OAIG;IACH,YAAY,CAAC,EAAE,CACb,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9B,oBAAoB,EAAE,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,QAAQ,CAAC;IACjB,sFAAsF;IACtF,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;OAIG;IACH,0BAA0B,EAAE,CAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,KACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAClC,CAAC;AAKF,0EAA0E;AAC1E,eAAO,MAAM,YAAY,aAAa,CAAC;AAEvC,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,eAAe,CAAC;AAiKpD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CA+BR;AA0FD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CA4SlE"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,6 @@ export declare function mergeConfigInputs(fileConfig: unknown, options: unknown)
57
57
  export declare function parseConfigFileJson(path: string, content: string): unknown;
58
58
  export declare function validateConfigFile(path: string, raw: unknown): OpenTeamConfig;
59
59
  export declare function validateConfigInput(label: string, raw: unknown): OpenTeamConfig;
60
- export declare function loadRuntimeOpenTeamConfig(storage: StorageProvider, options: unknown, path?: string, overlayPath?: string): Promise<RuntimeConfigResolution>;
60
+ export declare function loadRuntimeOpenTeamConfig(storage: StorageProvider, options: unknown, path?: string, overlayPath?: string | null): Promise<RuntimeConfigResolution>;
61
61
  export {};
62
62
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/config/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,WAAW,YACtB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,cAAc,EACd,eAAe,CACP,CAAC;AAGX,eAAO,MAAM,2BAA2B,cAAc,CAAC;AAMvD,eAAO,MAAM,kCAAkC;;;;kBAMpC,CAAC;AAEZ,eAAO,MAAM,4BAA4B;;;;mBAKrC,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;kBAM3B,CAAC;AAEZ,eAAO,MAAM,gCAAgC,EAAE,WAAW,CACxD,MAAM,EACN,SAAS,MAAM,EAAE,CAOjB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAa5E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,CAgBrE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CAKtE;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,UAAU,GAAG,SAAS,CAcxB;AAcD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAWT;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAU1E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,CAE7E;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,OAAO,GACX,cAAc,CAMhB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,OAAO,EAChB,IAAI,SAAsB,EAC1B,WAAW,SAA6B,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAoDlC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/config/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,WAAW,YACtB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,cAAc,EACd,eAAe,CACP,CAAC;AAGX,eAAO,MAAM,2BAA2B,cAAc,CAAC;AAMvD,eAAO,MAAM,kCAAkC;;;;kBAMpC,CAAC;AAEZ,eAAO,MAAM,4BAA4B;;;;mBAKrC,CAAC;AAEL,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;kBAM3B,CAAC;AAEZ,eAAO,MAAM,gCAAgC,EAAE,WAAW,CACxD,MAAM,EACN,SAAS,MAAM,EAAE,CAOjB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAa5E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,CAgBrE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CAKtE;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,UAAU,GAAG,SAAS,CAcxB;AAcD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAWT;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAU1E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,CAE7E;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,OAAO,GACX,cAAc,CAMhB;AAED,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,OAAO,EAChB,IAAI,SAAsB,EAC1B,WAAW,GAAE,MAAM,GAAG,IAAiC,GACtD,OAAO,CAAC,uBAAuB,CAAC,CAsDlC"}
package/dist/index.js CHANGED
@@ -3473,9 +3473,9 @@ async function loadRuntimeOpenTeamConfig(storage, options, path = DEFAULT_CONFIG
3473
3473
  }
3474
3474
  const configOptions = configOptionsFromPluginOptions(options);
3475
3475
  const optionsFound = configOptions !== undefined;
3476
- const overlayContent = await storage.read(overlayPath);
3476
+ const overlayContent = overlayPath === null ? undefined : await storage.read(overlayPath);
3477
3477
  const overlayFound = overlayContent !== undefined;
3478
- const overlayRaw = overlayFound ? parseConfigFileJson(overlayPath, overlayContent) : undefined;
3478
+ const overlayRaw = overlayFound && overlayPath !== null ? parseConfigFileJson(overlayPath, overlayContent) : undefined;
3479
3479
  const mergedRaw = mergeConfigInputs(mergeConfigInputs(fileRaw, configOptions), overlayRaw);
3480
3480
  const mergedSources = [
3481
3481
  fileFound ? path : undefined,
@@ -3491,7 +3491,7 @@ async function loadRuntimeOpenTeamConfig(storage, options, path = DEFAULT_CONFIG
3491
3491
  fileFound,
3492
3492
  optionsFound,
3493
3493
  overlayFound,
3494
- searchedPaths: [path, overlayPath]
3494
+ searchedPaths: overlayPath === null ? [path] : [path, overlayPath]
3495
3495
  };
3496
3496
  }
3497
3497
 
@@ -5985,7 +5985,7 @@ function runtimeIdOfModel(model, config) {
5985
5985
  }
5986
5986
  function roleLocalModel(role, runtimeId, fallback) {
5987
5987
  const pinned = role.localModels?.[runtimeId];
5988
- return pinned === undefined ? fallback : { providerID: runtimeId, modelID: pinned };
5988
+ return pinned === undefined ? fallback : { ...fallback, modelID: pinned };
5989
5989
  }
5990
5990
  function selectDispatchRuntime(role, decision2, reachable, config) {
5991
5991
  if (decision2.routeKind !== "local") {
@@ -13266,7 +13266,7 @@ var createOtlpSpanExporter = (connection, config) => {
13266
13266
  // package.json
13267
13267
  var package_default = {
13268
13268
  name: "@jmanuelcorral/openteam",
13269
- version: "0.14.0",
13269
+ version: "0.15.0",
13270
13270
  packageManager: "bun@1.3.14",
13271
13271
  description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
13272
13272
  license: "MIT",
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeSelection.d.ts","sourceRoot":"","sources":["../../src/orchestrator/runtimeSelection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC,CAAC;AASF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,cAAc,GACrB,cAAc,GAAG,SAAS,CAI5B;AAoBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,SAAS,EAClD,MAAM,EAAE,cAAc,GACrB,wBAAwB,CAsC1B"}
1
+ {"version":3,"file":"runtimeSelection.d.ts","sourceRoot":"","sources":["../../src/orchestrator/runtimeSelection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC,CAAC;AASF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,cAAc,GACrB,cAAc,GAAG,SAAS,CAI5B;AAuBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,SAAS,EAClD,MAAM,EAAE,cAAc,GACrB,wBAAwB,CAsC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jmanuelcorral/openteam",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "packageManager": "bun@1.3.14",
5
5
  "description": "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
6
6
  "license": "MIT",