@jmanuelcorral/openteam 0.22.0 → 0.22.1
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 +1 -1
- package/README.md +1 -1
- package/dist/certificates/graph-release-certificate.json +2 -2
- package/dist/certificates/graph-shadow-certificate.json +2 -2
- package/dist/cli.js +141 -45
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/setup.d.ts +10 -12
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/index.js +23 -12
- package/dist/messages/executionSetup.d.ts +10 -5
- package/dist/messages/executionSetup.d.ts.map +1 -1
- package/package.json +1 -1
package/README.es.md
CHANGED
|
@@ -945,7 +945,7 @@ Consulta [docs/compatibility.md](docs/compatibility.md). Resumen verificado el `
|
|
|
945
945
|
|
|
946
946
|
| Superficie | Versión / contrato |
|
|
947
947
|
| --- | --- |
|
|
948
|
-
| openteam | `0.22.
|
|
948
|
+
| openteam | `0.22.1`; versión actual del paquete |
|
|
949
949
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
950
950
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
951
951
|
| Hook de routing | `chat.message`; no `chat.params` para cambiar modelo |
|
package/README.md
CHANGED
|
@@ -903,7 +903,7 @@ See [docs/compatibility.md](docs/compatibility.md). Verified summary as of `2026
|
|
|
903
903
|
|
|
904
904
|
| Surface | Version / contract |
|
|
905
905
|
| --- | --- |
|
|
906
|
-
| openteam | `0.22.
|
|
906
|
+
| openteam | `0.22.1`; current package version |
|
|
907
907
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
908
908
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
909
909
|
| Routing hook | `chat.message`; not `chat.params` for model changes |
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"idempotent": true
|
|
35
35
|
},
|
|
36
36
|
"performance": {
|
|
37
|
-
"p95Millis": 0.
|
|
37
|
+
"p95Millis": 0.48969799999997576,
|
|
38
38
|
"budgetMillis": 50,
|
|
39
39
|
"samples": 100
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"verdict": "pass",
|
|
43
43
|
"failedGates": [],
|
|
44
|
-
"digest": "
|
|
44
|
+
"digest": "74698df75550b729faeaa17c40fa0c31d0570a6348b33f9e8a77cb544c9e17fc"
|
|
45
45
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"rawFindings": 0
|
|
21
21
|
},
|
|
22
22
|
"overhead": {
|
|
23
|
-
"p95Millis": 0.
|
|
23
|
+
"p95Millis": 0.40520899999998505,
|
|
24
24
|
"budgetMillis": 25,
|
|
25
25
|
"samples": 1000
|
|
26
26
|
},
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
},
|
|
36
36
|
"verdict": "pass",
|
|
37
37
|
"failedGates": [],
|
|
38
|
-
"digest": "
|
|
38
|
+
"digest": "9ad339e9583126667015455e8b077fd61a7d5e6c03fcfae14a5eafaa0ff7e509"
|
|
39
39
|
}
|
package/dist/cli.js
CHANGED
|
@@ -3331,7 +3331,7 @@ var executionSetupMessages = {
|
|
|
3331
3331
|
unknownLocalPluginIdentity: (spec) => `plugin entry ${JSON.stringify(spec)} points to a local file whose package identity could not be verified; keep the existing local loader or replace it with an explicit ${JSON.stringify("@jmanuelcorral/openteam@x.y.z")} npm pin before re-running setup`,
|
|
3332
3332
|
providerModelObjectRequired: (providerID, modelID) => `provider.${providerID}.models.${modelID} must be a JSON object`,
|
|
3333
3333
|
providerModelLimitObjectRequired: (providerID, modelID) => `provider.${providerID}.models.${modelID}.limit must be a JSON object`,
|
|
3334
|
-
|
|
3334
|
+
providerModelLimitInteger: (providerID, modelID, field) => `provider.${providerID}.models.${modelID}.limit.${field} must be ${field === "context" ? "a non-negative integer (0 means unknown)" : "a positive integer"}`
|
|
3335
3335
|
},
|
|
3336
3336
|
rolePolicy: {
|
|
3337
3337
|
whyTitle: "Configure execution and model selection",
|
|
@@ -3376,16 +3376,21 @@ var doctorMessages = {
|
|
|
3376
3376
|
warningSummary: (count) => ` local model limits: ${count} warning(s)`,
|
|
3377
3377
|
modelWarning: (providerID, modelID, problems) => ` ⚠ ${providerID}/${modelID}: ${problems}`,
|
|
3378
3378
|
invalidLimitBlock: "invalid limit block (expected an object)",
|
|
3379
|
-
|
|
3380
|
-
|
|
3379
|
+
unconfiguredOutput: "no limit.output (no explicit local output budget; opencode uses its model defaults)",
|
|
3380
|
+
unconfiguredContext: "no limit.context (no explicit usable context budget is configured)",
|
|
3381
|
+
missingOutput: "no limit.output (opencode rejects the provider model because output is required whenever limit is present)",
|
|
3382
|
+
missingContext: "no limit.context (opencode rejects the provider model because context is required whenever limit is present)",
|
|
3383
|
+
unknownContext: "limit.context is 0, so context is unknown and automatic compaction is disabled",
|
|
3381
3384
|
invalidOutput: "invalid limit.output (expected a positive integer token count)",
|
|
3382
|
-
invalidContext: "invalid limit.context (expected a
|
|
3385
|
+
invalidContext: "invalid limit.context (expected a non-negative integer token count; 0 means unknown)",
|
|
3383
3386
|
invalidInput: "invalid limit.input (expected a positive integer token count)",
|
|
3384
3387
|
outputExceedsContext: "limit.output is greater than or equal to limit.context, so the configured context leaves no usable input window",
|
|
3385
3388
|
outputExceedsInput: "limit.input is less than or equal to the reserved output budget, so compaction would have no usable input threshold",
|
|
3386
3389
|
outputRemedy: " remedy: re-run `openteam setup` to write openteam's 8 192-token local output default, then re-run `openteam doctor`.",
|
|
3390
|
+
unconfiguredLimitRemedy: " remedy: the optional limit block may remain absent; to configure explicit limits, manually add a complete limit object in opencode.json with positive output and non-negative context (0 means unknown), because setup fills an absent limit block only for models the runtime currently discovers. Then re-run `openteam doctor`.",
|
|
3387
3391
|
detectedContextRemedy: " remedy: re-run `openteam setup` while the runtime is reachable to copy the detected usable context budget, then re-run `openteam doctor`.",
|
|
3388
|
-
unknownContextRemedy: " remedy:
|
|
3392
|
+
unknownContextRemedy: " remedy: re-run `openteam setup` to write the required context:0 sentinel; automatic compaction remains disabled until a positive context is configured.",
|
|
3393
|
+
zeroContextRemedy: " remedy: edit or remove limit.context and re-run `openteam setup` while the runtime advertises a positive context window to enable automatic compaction.",
|
|
3389
3394
|
invalidLimitRemedy: " remedy: fix the invalid local limit values in opencode.json before relying on this provider configuration."
|
|
3390
3395
|
}
|
|
3391
3396
|
};
|
|
@@ -16427,6 +16432,9 @@ function hasOwn(record2, key) {
|
|
|
16427
16432
|
function positiveInteger2(value) {
|
|
16428
16433
|
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value > 0 ? value : undefined;
|
|
16429
16434
|
}
|
|
16435
|
+
function nonNegativeInteger2(value) {
|
|
16436
|
+
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value >= 0 ? value : undefined;
|
|
16437
|
+
}
|
|
16430
16438
|
function recordAt(source, key) {
|
|
16431
16439
|
const value = source?.[key];
|
|
16432
16440
|
return isRecord4(value) ? value : undefined;
|
|
@@ -16799,28 +16807,31 @@ function collectLocalModelLimitWarnings(input) {
|
|
|
16799
16807
|
const rawContext = limit?.context;
|
|
16800
16808
|
const rawInput = limit?.input;
|
|
16801
16809
|
const output = positiveInteger2(rawOutput);
|
|
16802
|
-
const context =
|
|
16810
|
+
const context = nonNegativeInteger2(rawContext);
|
|
16803
16811
|
const inputLimit = positiveInteger2(rawInput);
|
|
16804
16812
|
if (limit === undefined || !hasOwn(limit, "output")) {
|
|
16805
|
-
problems.push(doctorMessages.localModelLimits.missingOutput);
|
|
16806
|
-
remedies.add(doctorMessages.localModelLimits.outputRemedy);
|
|
16813
|
+
problems.push(limit === undefined ? doctorMessages.localModelLimits.unconfiguredOutput : doctorMessages.localModelLimits.missingOutput);
|
|
16814
|
+
remedies.add(limit === undefined ? doctorMessages.localModelLimits.unconfiguredLimitRemedy : doctorMessages.localModelLimits.outputRemedy);
|
|
16807
16815
|
} else if (output === undefined) {
|
|
16808
16816
|
problems.push(doctorMessages.localModelLimits.invalidOutput);
|
|
16809
16817
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
16810
16818
|
}
|
|
16811
16819
|
if (limit === undefined || !hasOwn(limit, "context")) {
|
|
16812
|
-
problems.push(doctorMessages.localModelLimits.missingContext);
|
|
16820
|
+
problems.push(limit === undefined ? doctorMessages.localModelLimits.unconfiguredContext : doctorMessages.localModelLimits.missingContext);
|
|
16813
16821
|
const runtimeContext = detectedContexts.get(providerID)?.get(modelID);
|
|
16814
|
-
remedies.add(runtimeContext === undefined ? doctorMessages.localModelLimits.unknownContextRemedy : doctorMessages.localModelLimits.detectedContextRemedy);
|
|
16822
|
+
remedies.add(limit === undefined ? doctorMessages.localModelLimits.unconfiguredLimitRemedy : runtimeContext === undefined ? doctorMessages.localModelLimits.unknownContextRemedy : doctorMessages.localModelLimits.detectedContextRemedy);
|
|
16815
16823
|
} else if (context === undefined) {
|
|
16816
16824
|
problems.push(doctorMessages.localModelLimits.invalidContext);
|
|
16817
16825
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
16826
|
+
} else if (context === 0) {
|
|
16827
|
+
problems.push(doctorMessages.localModelLimits.unknownContext);
|
|
16828
|
+
remedies.add(doctorMessages.localModelLimits.zeroContextRemedy);
|
|
16818
16829
|
}
|
|
16819
16830
|
if (limit !== undefined && hasOwn(limit, "input") && inputLimit === undefined) {
|
|
16820
16831
|
problems.push(doctorMessages.localModelLimits.invalidInput);
|
|
16821
16832
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
16822
16833
|
}
|
|
16823
|
-
if (output !== undefined && context !== undefined && output >= context) {
|
|
16834
|
+
if (output !== undefined && context !== undefined && context > 0 && output >= context) {
|
|
16824
16835
|
problems.push(doctorMessages.localModelLimits.outputExceedsContext);
|
|
16825
16836
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
16826
16837
|
}
|
|
@@ -17300,7 +17311,7 @@ import { posix as pathPosix, win32 as pathWin32 } from "node:path";
|
|
|
17300
17311
|
// package.json
|
|
17301
17312
|
var package_default = {
|
|
17302
17313
|
name: "@jmanuelcorral/openteam",
|
|
17303
|
-
version: "0.22.
|
|
17314
|
+
version: "0.22.1",
|
|
17304
17315
|
packageManager: "bun@1.3.14",
|
|
17305
17316
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
17306
17317
|
license: "MIT",
|
|
@@ -17620,13 +17631,12 @@ var OPENCODE_GITIGNORE_PATH = ".opencode/.gitignore";
|
|
|
17620
17631
|
var DEFAULT_LOCAL_OUTPUT_TOKENS = 8192;
|
|
17621
17632
|
var MIN_USABLE_INPUT_TOKENS = 1024;
|
|
17622
17633
|
function computeModelLimit(contextWindow, inputBudget) {
|
|
17623
|
-
const
|
|
17634
|
+
const context = contextWindow ?? 0;
|
|
17635
|
+
const contextBudget = context > 0 ? context : undefined;
|
|
17636
|
+
const validInputBudget = inputBudget !== undefined && inputBudget > 0 ? inputBudget : undefined;
|
|
17637
|
+
const effectiveBudget = contextBudget === undefined ? validInputBudget : validInputBudget === undefined ? contextBudget : Math.min(contextBudget, validInputBudget);
|
|
17624
17638
|
const output = effectiveBudget !== undefined && effectiveBudget - DEFAULT_LOCAL_OUTPUT_TOKENS < MIN_USABLE_INPUT_TOKENS ? Math.max(1, Math.floor(effectiveBudget / 2)) : DEFAULT_LOCAL_OUTPUT_TOKENS;
|
|
17625
|
-
|
|
17626
|
-
if (contextWindow !== undefined) {
|
|
17627
|
-
limit.context = contextWindow;
|
|
17628
|
-
}
|
|
17629
|
-
return limit;
|
|
17639
|
+
return { context, output };
|
|
17630
17640
|
}
|
|
17631
17641
|
function collectContextWindows(modelInfo, usedModelIDs) {
|
|
17632
17642
|
if (modelInfo === undefined) {
|
|
@@ -18327,6 +18337,9 @@ function hasOwn2(record2, key) {
|
|
|
18327
18337
|
function positiveInteger3(value) {
|
|
18328
18338
|
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value > 0 ? value : undefined;
|
|
18329
18339
|
}
|
|
18340
|
+
function nonNegativeInteger3(value) {
|
|
18341
|
+
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value >= 0 ? value : undefined;
|
|
18342
|
+
}
|
|
18330
18343
|
function stripTrailingCommas(src) {
|
|
18331
18344
|
const out = [];
|
|
18332
18345
|
let i = 0;
|
|
@@ -18745,15 +18758,16 @@ function assertRelevantLimitNumbers(file, providerIDs) {
|
|
|
18745
18758
|
throw new ConfigParseError(file.path, executionSetupMessages.rerun.providerModelLimitObjectRequired(providerID, modelID));
|
|
18746
18759
|
}
|
|
18747
18760
|
for (const field of LIMIT_FIELDS) {
|
|
18748
|
-
|
|
18749
|
-
|
|
18761
|
+
const valid = field === "context" ? nonNegativeInteger3(modelValue.limit[field]) : positiveInteger3(modelValue.limit[field]);
|
|
18762
|
+
if (hasOwn2(modelValue.limit, field) && valid === undefined) {
|
|
18763
|
+
throw new ConfigParseError(file.path, executionSetupMessages.rerun.providerModelLimitInteger(providerID, modelID, field));
|
|
18750
18764
|
}
|
|
18751
18765
|
}
|
|
18752
18766
|
}
|
|
18753
18767
|
}
|
|
18754
18768
|
}
|
|
18755
18769
|
function readModelLimitValues(limit) {
|
|
18756
|
-
const context = limit !== undefined ?
|
|
18770
|
+
const context = limit !== undefined ? nonNegativeInteger3(limit.context) : undefined;
|
|
18757
18771
|
const input = limit !== undefined ? positiveInteger3(limit.input) : undefined;
|
|
18758
18772
|
const output = limit !== undefined ? positiveInteger3(limit.output) : undefined;
|
|
18759
18773
|
return {
|
|
@@ -18774,19 +18788,80 @@ function mergeModelLimitForRerun(input) {
|
|
|
18774
18788
|
merged.output = computed.output;
|
|
18775
18789
|
} else if (target.output !== undefined) {
|
|
18776
18790
|
merged.output = target.output;
|
|
18777
|
-
} else if (effective.output
|
|
18791
|
+
} else if (effective.output !== undefined) {
|
|
18792
|
+
merged.output = effective.output;
|
|
18793
|
+
} else {
|
|
18778
18794
|
merged.output = computed.output;
|
|
18779
18795
|
}
|
|
18780
18796
|
if (target.context !== undefined) {
|
|
18781
18797
|
merged.context = target.context;
|
|
18782
|
-
} else if (effective.context
|
|
18783
|
-
merged.context =
|
|
18798
|
+
} else if (effective.context !== undefined) {
|
|
18799
|
+
merged.context = effective.context;
|
|
18800
|
+
} else {
|
|
18801
|
+
merged.context = input.generatedLimit?.context ?? 0;
|
|
18784
18802
|
}
|
|
18785
18803
|
if (target.input !== undefined) {
|
|
18786
18804
|
merged.input = target.input;
|
|
18787
18805
|
}
|
|
18788
18806
|
return Object.keys(merged).length === 0 ? undefined : merged;
|
|
18789
18807
|
}
|
|
18808
|
+
function generatedModelLimit(generated, providerID, modelID) {
|
|
18809
|
+
return generated.provider?.[providerID]?.models[modelID]?.limit;
|
|
18810
|
+
}
|
|
18811
|
+
function completePhysicalModelLimit(input) {
|
|
18812
|
+
const target = readModelLimitValues(input.targetLimit);
|
|
18813
|
+
const effective = readModelLimitValues(input.effectiveLimit);
|
|
18814
|
+
const context = target.context ?? effective.context ?? input.generatedLimit?.context ?? 0;
|
|
18815
|
+
const output = target.output ?? effective.output ?? computeModelLimit(context, effective.input).output;
|
|
18816
|
+
return { ...input.targetLimit, context, output };
|
|
18817
|
+
}
|
|
18818
|
+
function repairManagedModelLimits(input) {
|
|
18819
|
+
const targetProvider = recordAt2(input.raw, "provider");
|
|
18820
|
+
if (targetProvider === undefined) {
|
|
18821
|
+
return { raw: input.raw, changed: false };
|
|
18822
|
+
}
|
|
18823
|
+
const effectiveProvider = recordAt2(input.effectiveRaw, "provider");
|
|
18824
|
+
let changed = false;
|
|
18825
|
+
const repairedProvider = { ...targetProvider };
|
|
18826
|
+
for (const providerID of input.providerIDs) {
|
|
18827
|
+
const targetProviderConfig = recordAt2(targetProvider, providerID);
|
|
18828
|
+
const targetModels = recordAt2(targetProviderConfig, "models");
|
|
18829
|
+
if (targetProviderConfig === undefined || targetModels === undefined) {
|
|
18830
|
+
continue;
|
|
18831
|
+
}
|
|
18832
|
+
const effectiveModels = recordAt2(recordAt2(effectiveProvider, providerID), "models");
|
|
18833
|
+
let providerChanged = false;
|
|
18834
|
+
const repairedModels = { ...targetModels };
|
|
18835
|
+
for (const [modelID, modelValue] of Object.entries(targetModels)) {
|
|
18836
|
+
if (!isRecord6(modelValue) || !hasOwn2(modelValue, "limit")) {
|
|
18837
|
+
continue;
|
|
18838
|
+
}
|
|
18839
|
+
const targetLimit = recordAt2(modelValue, "limit");
|
|
18840
|
+
if (targetLimit === undefined) {
|
|
18841
|
+
continue;
|
|
18842
|
+
}
|
|
18843
|
+
const effectiveLimit = recordAt2(recordAt2(effectiveModels, modelID), "limit");
|
|
18844
|
+
const generatedLimit = generatedModelLimit(input.generated, providerID, modelID);
|
|
18845
|
+
const repairedLimit = completePhysicalModelLimit({
|
|
18846
|
+
...generatedLimit !== undefined ? { generatedLimit } : {},
|
|
18847
|
+
targetLimit,
|
|
18848
|
+
...effectiveLimit !== undefined ? { effectiveLimit } : {}
|
|
18849
|
+
});
|
|
18850
|
+
if (JSON.stringify(repairedLimit) !== JSON.stringify(targetLimit)) {
|
|
18851
|
+
repairedModels[modelID] = { ...modelValue, limit: repairedLimit };
|
|
18852
|
+
providerChanged = true;
|
|
18853
|
+
}
|
|
18854
|
+
}
|
|
18855
|
+
if (providerChanged) {
|
|
18856
|
+
repairedProvider[providerID] = {
|
|
18857
|
+
...targetProviderConfig,
|
|
18858
|
+
models: repairedModels
|
|
18859
|
+
};
|
|
18860
|
+
changed = true;
|
|
18861
|
+
}
|
|
18862
|
+
}
|
|
18863
|
+
return changed ? { raw: { ...input.raw, provider: repairedProvider }, changed: true } : { raw: input.raw, changed: false };
|
|
18864
|
+
}
|
|
18790
18865
|
function recordAt2(source, key) {
|
|
18791
18866
|
const value = source?.[key];
|
|
18792
18867
|
return isRecord6(value) ? value : undefined;
|
|
@@ -19154,17 +19229,41 @@ async function runSetup(deps) {
|
|
|
19154
19229
|
const finalOpenTeamConfig = existingOpenTeamConfig !== undefined ? mergeOpenTeamConfigForRerun(openTeamConfig, existingOpenTeamConfig) : openTeamConfig;
|
|
19155
19230
|
assertEffectiveConfigModelDomains(finalOpenTeamConfig);
|
|
19156
19231
|
const dataTargetRaw = opencodeFileAt(existingOpencodeFiles, opencodeDataPath)?.raw ?? {};
|
|
19157
|
-
const
|
|
19232
|
+
const mergedOpencodeRaw = mergeOpencodeConfigForRerun(opencodeConfig, dataTargetRaw, {
|
|
19158
19233
|
...effectiveExistingOpencode !== undefined ? { effectiveRaw: effectiveExistingOpencode } : {},
|
|
19159
19234
|
includePlugin: includePluginInDataFile,
|
|
19160
19235
|
...includePluginInDataFile ? { pluginEntries: pluginPlan.plugins } : {},
|
|
19161
19236
|
yolo
|
|
19162
19237
|
});
|
|
19163
|
-
const
|
|
19164
|
-
|
|
19165
|
-
|
|
19166
|
-
|
|
19167
|
-
|
|
19238
|
+
const repairedDataTarget = repairManagedModelLimits({
|
|
19239
|
+
raw: mergedOpencodeRaw,
|
|
19240
|
+
effectiveRaw: effectiveExistingOpencode,
|
|
19241
|
+
generated: opencodeConfig,
|
|
19242
|
+
providerIDs: relevantProviderIDs
|
|
19243
|
+
});
|
|
19244
|
+
const opencodeWritePlan = new Map([
|
|
19245
|
+
[opencodeDataPath, serializeOpencodeConfig(repairedDataTarget.raw)]
|
|
19246
|
+
]);
|
|
19247
|
+
for (const file of existingOpencodeFiles) {
|
|
19248
|
+
if (file.path === opencodeDataPath) {
|
|
19249
|
+
continue;
|
|
19250
|
+
}
|
|
19251
|
+
const repaired = repairManagedModelLimits({
|
|
19252
|
+
raw: file.raw,
|
|
19253
|
+
effectiveRaw: effectiveExistingOpencode,
|
|
19254
|
+
generated: opencodeConfig,
|
|
19255
|
+
providerIDs: relevantProviderIDs
|
|
19256
|
+
});
|
|
19257
|
+
let plannedRaw = repaired.raw;
|
|
19258
|
+
let changed = repaired.changed;
|
|
19259
|
+
if (file.path === pluginOwnerPath && !includePluginInDataFile && pluginPlan.changed) {
|
|
19260
|
+
plannedRaw = { ...plannedRaw, plugin: [...pluginPlan.plugins] };
|
|
19261
|
+
changed = true;
|
|
19262
|
+
}
|
|
19263
|
+
if (changed) {
|
|
19264
|
+
opencodeWritePlan.set(file.path, serializeOpencodeConfig(plannedRaw));
|
|
19265
|
+
}
|
|
19266
|
+
}
|
|
19168
19267
|
const roleAgentFiles = buildRoleAgentFiles(finalOpenTeamConfig);
|
|
19169
19268
|
const opencodeGitignorePath = OPENCODE_GITIGNORE_PATH;
|
|
19170
19269
|
const existingGitignore = await deps.fileExists(opencodeGitignorePath) ? await deps.readFile(opencodeGitignorePath) ?? "" : "";
|
|
@@ -19177,8 +19276,10 @@ async function runSetup(deps) {
|
|
|
19177
19276
|
if (opencodeFileAt(existingOpencodeFiles, opencodeDataPath) !== undefined) {
|
|
19178
19277
|
existing.add(opencodeDataPath);
|
|
19179
19278
|
}
|
|
19180
|
-
|
|
19181
|
-
|
|
19279
|
+
for (const path2 of opencodeWritePlan.keys()) {
|
|
19280
|
+
if (opencodeFileAt(existingOpencodeFiles, path2) !== undefined) {
|
|
19281
|
+
existing.add(path2);
|
|
19282
|
+
}
|
|
19182
19283
|
}
|
|
19183
19284
|
if (await deps.fileExists(agentPath)) {
|
|
19184
19285
|
existing.add(ORCHESTRATOR_AGENT_PATH);
|
|
@@ -19210,12 +19311,11 @@ async function runSetup(deps) {
|
|
|
19210
19311
|
}
|
|
19211
19312
|
}
|
|
19212
19313
|
const filesNeedingNormalization = new Map;
|
|
19213
|
-
const
|
|
19214
|
-
|
|
19215
|
-
|
|
19216
|
-
|
|
19217
|
-
|
|
19218
|
-
filesNeedingNormalization.set(pluginOwnerPath, pluginOwnerFile.format);
|
|
19314
|
+
for (const path2 of opencodeWritePlan.keys()) {
|
|
19315
|
+
const file = opencodeFileAt(existingOpencodeFiles, path2);
|
|
19316
|
+
if (file !== undefined) {
|
|
19317
|
+
filesNeedingNormalization.set(path2, file.format);
|
|
19318
|
+
}
|
|
19219
19319
|
}
|
|
19220
19320
|
for (const [path2, format] of filesNeedingNormalization) {
|
|
19221
19321
|
const confirm2 = await confirmJsonNormalization(prompt, path2, format);
|
|
@@ -19232,9 +19332,8 @@ async function runSetup(deps) {
|
|
|
19232
19332
|
};
|
|
19233
19333
|
}
|
|
19234
19334
|
await deps.writeFile(openTeamPath, serializeOpenTeamConfig(finalOpenTeamConfig));
|
|
19235
|
-
|
|
19236
|
-
|
|
19237
|
-
await deps.writeFile(pluginOwnerPath, finalPluginOutput);
|
|
19335
|
+
for (const [path2, contents] of opencodeWritePlan) {
|
|
19336
|
+
await deps.writeFile(path2, contents);
|
|
19238
19337
|
}
|
|
19239
19338
|
await deps.writeFile(agentPath, orchestratorAgent);
|
|
19240
19339
|
for (const roleAgent of roleAgentFiles) {
|
|
@@ -19250,10 +19349,7 @@ async function runSetup(deps) {
|
|
|
19250
19349
|
const remote = runtime.baseURL !== undefined && !runtime.baseURL.includes("localhost") && !runtime.baseURL.includes("127.0.0.1") ? ` @ ${runtime.baseURL}` : "";
|
|
19251
19350
|
return `${runtime.id} (${runtime.defaultModelID})${remote}`;
|
|
19252
19351
|
}).join(", ");
|
|
19253
|
-
const writtenOpencodePaths = [
|
|
19254
|
-
opencodeDataPath,
|
|
19255
|
-
...finalPluginOutput !== undefined && pluginOwnerPath !== opencodeDataPath ? [pluginOwnerPath] : []
|
|
19256
|
-
].join(", ");
|
|
19352
|
+
const writtenOpencodePaths = [...opencodeWritePlan.keys()].join(", ");
|
|
19257
19353
|
prompt.note(executionSetupMessages.configuredSummary({
|
|
19258
19354
|
executionMode: executionMode2,
|
|
19259
19355
|
primaryModel: `${primaryModel.providerID}/${primaryModel.modelID}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/setup.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProviderConfig } from "@opencode-ai/sdk";
|
|
1
2
|
import type { ModelCapabilityProfile } from "../capabilities/types";
|
|
2
3
|
import { type ModelRef, type OpenTeamConfig } from "../config/schema";
|
|
3
4
|
import type { LocalModelInfo, LocalRuntimeId, LocalRuntimeKind } from "../local/types";
|
|
@@ -25,12 +26,11 @@ export declare const OPENCODE_GITIGNORE_PATH = ".opencode/.gitignore";
|
|
|
25
26
|
export declare const DEFAULT_LOCAL_OUTPUT_TOKENS = 8192;
|
|
26
27
|
/**
|
|
27
28
|
* Limit block written into a local model's opencode provider config entry.
|
|
28
|
-
*
|
|
29
|
-
*
|
|
29
|
+
* The required fields come from the pinned SDK's `ProviderConfig`; `input` is
|
|
30
|
+
* the narrow v1.18.19 host extension verified in provider.ts/overflow.ts.
|
|
30
31
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
context?: number;
|
|
32
|
+
type SdkModelLimitConfig = NonNullable<NonNullable<ProviderConfig["models"]>[string]["limit"]>;
|
|
33
|
+
export type ModelLimitConfig = SdkModelLimitConfig & {
|
|
34
34
|
/**
|
|
35
35
|
* Explicit input budget in tokens. When set, opencode's session/overflow.ts
|
|
36
36
|
* uses `max(0, input - reserved)` rather than `context - maxOutputTokens`,
|
|
@@ -38,8 +38,6 @@ export type ModelLimitConfig = {
|
|
|
38
38
|
* opencode compute the usable window from `context` and `output`.
|
|
39
39
|
*/
|
|
40
40
|
input?: number;
|
|
41
|
-
/** Maximum output tokens for a single generation. */
|
|
42
|
-
output?: number;
|
|
43
41
|
};
|
|
44
42
|
/**
|
|
45
43
|
* Computes the `limit` block for a local model entry in opencode.json. Pure.
|
|
@@ -47,9 +45,9 @@ export type ModelLimitConfig = {
|
|
|
47
45
|
* - `output` defaults to {@link DEFAULT_LOCAL_OUTPUT_TOKENS} (8192), openteam's
|
|
48
46
|
* client-side local default. This cap is written explicitly so opencode uses
|
|
49
47
|
* it instead of its own 32 000-token fallback.
|
|
50
|
-
* - `context`
|
|
51
|
-
*
|
|
52
|
-
*
|
|
48
|
+
* - `context` preserves a positive runtime-reported value. When unavailable it
|
|
49
|
+
* is `0`, opencode's explicit unknown-context sentinel; this is not a guessed
|
|
50
|
+
* capacity and disables automatic compaction.
|
|
53
51
|
* - When an existing `limit.context` or `limit.input` override is smaller than
|
|
54
52
|
* the discovered context, the smaller effective budget governs the scaling so
|
|
55
53
|
* a re-run setup does not write a default output cap that wipes out the
|
|
@@ -63,8 +61,8 @@ export declare function computeModelLimit(contextWindow?: number, inputBudget?:
|
|
|
63
61
|
* Measured rather than guessed: reads the adapter's already-normalized
|
|
64
62
|
* `contextWindow` value, whether that came directly from the runtime or from a
|
|
65
63
|
* conservative adapter-side derivation. Returns `undefined` when no defensible
|
|
66
|
-
* context metadata was available
|
|
67
|
-
*
|
|
64
|
+
* context metadata was available; the config builder then writes opencode's
|
|
65
|
+
* required `context: 0` unknown sentinel rather than guessing a capacity.
|
|
68
66
|
* Pure.
|
|
69
67
|
*/
|
|
70
68
|
export declare function collectContextWindows(modelInfo: readonly LocalModelInfo[] | undefined, usedModelIDs: readonly string[]): Record<string, number> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5408,7 +5408,7 @@ import { z as z15 } from "zod";
|
|
|
5408
5408
|
// package.json
|
|
5409
5409
|
var package_default = {
|
|
5410
5410
|
name: "@jmanuelcorral/openteam",
|
|
5411
|
-
version: "0.22.
|
|
5411
|
+
version: "0.22.1",
|
|
5412
5412
|
packageManager: "bun@1.3.14",
|
|
5413
5413
|
description: "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
5414
5414
|
license: "MIT",
|
|
@@ -5757,7 +5757,7 @@ var executionSetupMessages = {
|
|
|
5757
5757
|
unknownLocalPluginIdentity: (spec) => `plugin entry ${JSON.stringify(spec)} points to a local file whose package identity could not be verified; keep the existing local loader or replace it with an explicit ${JSON.stringify("@jmanuelcorral/openteam@x.y.z")} npm pin before re-running setup`,
|
|
5758
5758
|
providerModelObjectRequired: (providerID, modelID) => `provider.${providerID}.models.${modelID} must be a JSON object`,
|
|
5759
5759
|
providerModelLimitObjectRequired: (providerID, modelID) => `provider.${providerID}.models.${modelID}.limit must be a JSON object`,
|
|
5760
|
-
|
|
5760
|
+
providerModelLimitInteger: (providerID, modelID, field) => `provider.${providerID}.models.${modelID}.limit.${field} must be ${field === "context" ? "a non-negative integer (0 means unknown)" : "a positive integer"}`
|
|
5761
5761
|
},
|
|
5762
5762
|
rolePolicy: {
|
|
5763
5763
|
whyTitle: "Configure execution and model selection",
|
|
@@ -5802,16 +5802,21 @@ var doctorMessages = {
|
|
|
5802
5802
|
warningSummary: (count) => ` local model limits: ${count} warning(s)`,
|
|
5803
5803
|
modelWarning: (providerID, modelID, problems) => ` ⚠ ${providerID}/${modelID}: ${problems}`,
|
|
5804
5804
|
invalidLimitBlock: "invalid limit block (expected an object)",
|
|
5805
|
-
|
|
5806
|
-
|
|
5805
|
+
unconfiguredOutput: "no limit.output (no explicit local output budget; opencode uses its model defaults)",
|
|
5806
|
+
unconfiguredContext: "no limit.context (no explicit usable context budget is configured)",
|
|
5807
|
+
missingOutput: "no limit.output (opencode rejects the provider model because output is required whenever limit is present)",
|
|
5808
|
+
missingContext: "no limit.context (opencode rejects the provider model because context is required whenever limit is present)",
|
|
5809
|
+
unknownContext: "limit.context is 0, so context is unknown and automatic compaction is disabled",
|
|
5807
5810
|
invalidOutput: "invalid limit.output (expected a positive integer token count)",
|
|
5808
|
-
invalidContext: "invalid limit.context (expected a
|
|
5811
|
+
invalidContext: "invalid limit.context (expected a non-negative integer token count; 0 means unknown)",
|
|
5809
5812
|
invalidInput: "invalid limit.input (expected a positive integer token count)",
|
|
5810
5813
|
outputExceedsContext: "limit.output is greater than or equal to limit.context, so the configured context leaves no usable input window",
|
|
5811
5814
|
outputExceedsInput: "limit.input is less than or equal to the reserved output budget, so compaction would have no usable input threshold",
|
|
5812
5815
|
outputRemedy: " remedy: re-run `openteam setup` to write openteam's 8 192-token local output default, then re-run `openteam doctor`.",
|
|
5816
|
+
unconfiguredLimitRemedy: " remedy: the optional limit block may remain absent; to configure explicit limits, manually add a complete limit object in opencode.json with positive output and non-negative context (0 means unknown), because setup fills an absent limit block only for models the runtime currently discovers. Then re-run `openteam doctor`.",
|
|
5813
5817
|
detectedContextRemedy: " remedy: re-run `openteam setup` while the runtime is reachable to copy the detected usable context budget, then re-run `openteam doctor`.",
|
|
5814
|
-
unknownContextRemedy: " remedy:
|
|
5818
|
+
unknownContextRemedy: " remedy: re-run `openteam setup` to write the required context:0 sentinel; automatic compaction remains disabled until a positive context is configured.",
|
|
5819
|
+
zeroContextRemedy: " remedy: edit or remove limit.context and re-run `openteam setup` while the runtime advertises a positive context window to enable automatic compaction.",
|
|
5815
5820
|
invalidLimitRemedy: " remedy: fix the invalid local limit values in opencode.json before relying on this provider configuration."
|
|
5816
5821
|
}
|
|
5817
5822
|
};
|
|
@@ -11830,6 +11835,9 @@ function hasOwn(record, key) {
|
|
|
11830
11835
|
function positiveInteger2(value) {
|
|
11831
11836
|
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value > 0 ? value : undefined;
|
|
11832
11837
|
}
|
|
11838
|
+
function nonNegativeInteger2(value) {
|
|
11839
|
+
return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value >= 0 ? value : undefined;
|
|
11840
|
+
}
|
|
11833
11841
|
function recordAt(source, key) {
|
|
11834
11842
|
const value = source?.[key];
|
|
11835
11843
|
return isRecord6(value) ? value : undefined;
|
|
@@ -12202,28 +12210,31 @@ function collectLocalModelLimitWarnings(input) {
|
|
|
12202
12210
|
const rawContext = limit?.context;
|
|
12203
12211
|
const rawInput = limit?.input;
|
|
12204
12212
|
const output = positiveInteger2(rawOutput);
|
|
12205
|
-
const context =
|
|
12213
|
+
const context = nonNegativeInteger2(rawContext);
|
|
12206
12214
|
const inputLimit = positiveInteger2(rawInput);
|
|
12207
12215
|
if (limit === undefined || !hasOwn(limit, "output")) {
|
|
12208
|
-
problems.push(doctorMessages.localModelLimits.missingOutput);
|
|
12209
|
-
remedies.add(doctorMessages.localModelLimits.outputRemedy);
|
|
12216
|
+
problems.push(limit === undefined ? doctorMessages.localModelLimits.unconfiguredOutput : doctorMessages.localModelLimits.missingOutput);
|
|
12217
|
+
remedies.add(limit === undefined ? doctorMessages.localModelLimits.unconfiguredLimitRemedy : doctorMessages.localModelLimits.outputRemedy);
|
|
12210
12218
|
} else if (output === undefined) {
|
|
12211
12219
|
problems.push(doctorMessages.localModelLimits.invalidOutput);
|
|
12212
12220
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
12213
12221
|
}
|
|
12214
12222
|
if (limit === undefined || !hasOwn(limit, "context")) {
|
|
12215
|
-
problems.push(doctorMessages.localModelLimits.missingContext);
|
|
12223
|
+
problems.push(limit === undefined ? doctorMessages.localModelLimits.unconfiguredContext : doctorMessages.localModelLimits.missingContext);
|
|
12216
12224
|
const runtimeContext = detectedContexts.get(providerID)?.get(modelID);
|
|
12217
|
-
remedies.add(runtimeContext === undefined ? doctorMessages.localModelLimits.unknownContextRemedy : doctorMessages.localModelLimits.detectedContextRemedy);
|
|
12225
|
+
remedies.add(limit === undefined ? doctorMessages.localModelLimits.unconfiguredLimitRemedy : runtimeContext === undefined ? doctorMessages.localModelLimits.unknownContextRemedy : doctorMessages.localModelLimits.detectedContextRemedy);
|
|
12218
12226
|
} else if (context === undefined) {
|
|
12219
12227
|
problems.push(doctorMessages.localModelLimits.invalidContext);
|
|
12220
12228
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
12229
|
+
} else if (context === 0) {
|
|
12230
|
+
problems.push(doctorMessages.localModelLimits.unknownContext);
|
|
12231
|
+
remedies.add(doctorMessages.localModelLimits.zeroContextRemedy);
|
|
12221
12232
|
}
|
|
12222
12233
|
if (limit !== undefined && hasOwn(limit, "input") && inputLimit === undefined) {
|
|
12223
12234
|
problems.push(doctorMessages.localModelLimits.invalidInput);
|
|
12224
12235
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
12225
12236
|
}
|
|
12226
|
-
if (output !== undefined && context !== undefined && output >= context) {
|
|
12237
|
+
if (output !== undefined && context !== undefined && context > 0 && output >= context) {
|
|
12227
12238
|
problems.push(doctorMessages.localModelLimits.outputExceedsContext);
|
|
12228
12239
|
remedies.add(doctorMessages.localModelLimits.invalidLimitRemedy);
|
|
12229
12240
|
}
|
|
@@ -77,7 +77,7 @@ export declare const executionSetupMessages: {
|
|
|
77
77
|
readonly unknownLocalPluginIdentity: (spec: string) => string;
|
|
78
78
|
readonly providerModelObjectRequired: (providerID: string, modelID: string) => string;
|
|
79
79
|
readonly providerModelLimitObjectRequired: (providerID: string, modelID: string) => string;
|
|
80
|
-
readonly
|
|
80
|
+
readonly providerModelLimitInteger: (providerID: string, modelID: string, field: "context" | "input" | "output") => string;
|
|
81
81
|
};
|
|
82
82
|
readonly rolePolicy: {
|
|
83
83
|
readonly whyTitle: "Configure execution and model selection";
|
|
@@ -128,16 +128,21 @@ export declare const doctorMessages: {
|
|
|
128
128
|
readonly warningSummary: (count: number) => string;
|
|
129
129
|
readonly modelWarning: (providerID: string, modelID: string, problems: string) => string;
|
|
130
130
|
readonly invalidLimitBlock: "invalid limit block (expected an object)";
|
|
131
|
-
readonly
|
|
132
|
-
readonly
|
|
131
|
+
readonly unconfiguredOutput: "no limit.output (no explicit local output budget; opencode uses its model defaults)";
|
|
132
|
+
readonly unconfiguredContext: "no limit.context (no explicit usable context budget is configured)";
|
|
133
|
+
readonly missingOutput: "no limit.output (opencode rejects the provider model because output is required whenever limit is present)";
|
|
134
|
+
readonly missingContext: "no limit.context (opencode rejects the provider model because context is required whenever limit is present)";
|
|
135
|
+
readonly unknownContext: "limit.context is 0, so context is unknown and automatic compaction is disabled";
|
|
133
136
|
readonly invalidOutput: "invalid limit.output (expected a positive integer token count)";
|
|
134
|
-
readonly invalidContext: "invalid limit.context (expected a
|
|
137
|
+
readonly invalidContext: "invalid limit.context (expected a non-negative integer token count; 0 means unknown)";
|
|
135
138
|
readonly invalidInput: "invalid limit.input (expected a positive integer token count)";
|
|
136
139
|
readonly outputExceedsContext: "limit.output is greater than or equal to limit.context, so the configured context leaves no usable input window";
|
|
137
140
|
readonly outputExceedsInput: "limit.input is less than or equal to the reserved output budget, so compaction would have no usable input threshold";
|
|
138
141
|
readonly outputRemedy: " remedy: re-run `openteam setup` to write openteam's 8 192-token local output default, then re-run `openteam doctor`.";
|
|
142
|
+
readonly unconfiguredLimitRemedy: " remedy: the optional limit block may remain absent; to configure explicit limits, manually add a complete limit object in opencode.json with positive output and non-negative context (0 means unknown), because setup fills an absent limit block only for models the runtime currently discovers. Then re-run `openteam doctor`.";
|
|
139
143
|
readonly detectedContextRemedy: " remedy: re-run `openteam setup` while the runtime is reachable to copy the detected usable context budget, then re-run `openteam doctor`.";
|
|
140
|
-
readonly unknownContextRemedy: " remedy:
|
|
144
|
+
readonly unknownContextRemedy: " remedy: re-run `openteam setup` to write the required context:0 sentinel; automatic compaction remains disabled until a positive context is configured.";
|
|
145
|
+
readonly zeroContextRemedy: " remedy: edit or remove limit.context and re-run `openteam setup` while the runtime advertises a positive context window to enable automatic compaction.";
|
|
141
146
|
readonly invalidLimitRemedy: " remedy: fix the invalid local limit values in opencode.json before relying on this provider configuration.";
|
|
142
147
|
};
|
|
143
148
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionSetup.d.ts","sourceRoot":"","sources":["../../src/messages/executionSetup.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB;aACjC,UAAU,EACR,qEAAqE;aACvE,eAAe,EACb,+EAA+E;aACjF,gBAAgB,EAAE,iCAAiC;aACnD,eAAe,EAAE,uCAAuC;aACxD,qBAAqB,EAAE,qBAAqB;aAC5C,oBAAoB;iBAClB,KAAK;qBACH,KAAK,EAAE,yDAAyD;qBAChE,IAAI,EAAE,6CAA6C;;iBAErD,QAAQ;qBACN,KAAK,EAAE,gDAAgD;qBACvD,IAAI,EAAE,kCAAkC;;iBAE1C,KAAK;qBACH,KAAK,EAAE,sDAAsD;qBAC7D,IAAI,EAAE,qEAAqE;;;aAG/E,gBAAgB;aAKhB,iBAAiB,EAAE,oBAAoB;aACvC,aAAa,UAAU,MAAM,KAAG,MAAM;aAMtC,cAAc,EAAE,iBAAiB;aACjC,kBAAkB,EAAE,mDAAmD;aACvE,oBAAoB,EAAE,2BAA2B;aACjD,iBAAiB,UAAU,MAAM,KAAG,MAAM;aAE1C,oBAAoB,EAAE,yBAAyB;aAC/C,qBAAqB,EACnB,iEAAiE;aACnE,oBAAoB,WAAW;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,KAAG,MAAM,EAAE;aAMZ,WAAW,EAAE,MAAM;aACnB,YAAY,EAAE,4DAA4D;aAC1E,iBAAiB,WAAW;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,KAAG,MAAM,EAAE;aAuBZ,eAAe,EAAE,qBAAqB;aACtC,QAAQ,UAAU,MAAM,KAAG,MAAM;aACjC,KAAK,YAAY,MAAM,KAAG,MAAM;aAChC,oBAAoB,EAClB,4DAA4D;aAC9D,gBAAgB,EACd,oEAAoE;aACtE,aAAa,EACX,kGAAkG;aACpG,IAAI,EAAE,sDAAsD;aAC5D,mBAAmB,oBACA,MAAM,iBACR,MAAM,KACpB,MAAM;aAMT,oBAAoB,EAAE,+BAA+B;aACrD,sBAAsB,oBACH,MAAM,iBACR,MAAM,KACpB,MAAM;aAET,4BAA4B,oBAAoB,MAAM,KAAG,MAAM;aAE/D,KAAK;iBACH,oBAAoB,SAAS,MAAM,UAAU,MAAM,KAAG,MAAM;iBAE5D,iBAAiB,EACf,4DAA4D;iBAC9D,sBAAsB,EAAE,yCAAyC;iBACjE,iBAAiB;qBACf,QAAQ,EAAE,gBAAgB;qBAC1B,cAAc,EAAE,iBAAiB;qBACjC,yBAAyB,EAAE,oCAAoC;;iBAEjE,6BAA6B,SAAS,MAAM,SAAS,MAAM,KAAG,MAAM;iBAEpE,8BAA8B,EAAE,kCAAkC;iBAClE,gCAAgC,SAAS,MAAM,KAAG,MAAM;iBAExD,4BAA4B,eAAe,MAAM,KAAG,MAAM;iBAE1D,qBAAqB,SAAS,SAAS,MAAM,EAAE,KAAG,MAAM;iBAExD,0BAA0B,SAAS,MAAM,KAAG,MAAM;iBAElD,2BAA2B,eACb,MAAM,WACT,MAAM,KACd,MAAM;iBAET,gCAAgC,eAClB,MAAM,WACT,MAAM,KACd,MAAM;iBAET,
|
|
1
|
+
{"version":3,"file":"executionSetup.d.ts","sourceRoot":"","sources":["../../src/messages/executionSetup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jmanuelcorral/openteam",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.1",
|
|
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",
|