stratagem-x7 0.3.7 → 0.3.9
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/dist/cli.mjs +88 -19
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -18231,9 +18231,6 @@ function getAdditionalModelOptionsCacheScope() {
|
|
|
18231
18231
|
if (request.transport !== "chat_completions") {
|
|
18232
18232
|
return null;
|
|
18233
18233
|
}
|
|
18234
|
-
if (!isLocalProviderUrl(request.baseUrl)) {
|
|
18235
|
-
return null;
|
|
18236
|
-
}
|
|
18237
18234
|
return `openai:${request.baseUrl.toLowerCase()}`;
|
|
18238
18235
|
}
|
|
18239
18236
|
function resolveCodexAuthPath(env2 = process.env) {
|
|
@@ -281071,6 +281068,8 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281071
281068
|
const [ollamaSelection, setOllamaSelection] = React25.useState({
|
|
281072
281069
|
state: "idle"
|
|
281073
281070
|
});
|
|
281071
|
+
const [discoveredModels, setDiscoveredModels] = React25.useState(null);
|
|
281072
|
+
const [modelDiscoveryLoading, setModelDiscoveryLoading] = React25.useState(false);
|
|
281074
281073
|
const currentStep = FORM_STEPS[formStepIndex] ?? FORM_STEPS[0];
|
|
281075
281074
|
const currentStepKey = currentStep.key;
|
|
281076
281075
|
const currentValue = draft[currentStepKey];
|
|
@@ -281561,6 +281560,46 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281561
281560
|
}
|
|
281562
281561
|
returnToMenu();
|
|
281563
281562
|
}
|
|
281563
|
+
React25.useEffect(() => {
|
|
281564
|
+
if (screen !== "form" || formStepIndex !== 3) {
|
|
281565
|
+
return;
|
|
281566
|
+
}
|
|
281567
|
+
const baseUrl = draft.baseUrl?.trim();
|
|
281568
|
+
if (!baseUrl) {
|
|
281569
|
+
setDiscoveredModels(null);
|
|
281570
|
+
return;
|
|
281571
|
+
}
|
|
281572
|
+
let cancelled = false;
|
|
281573
|
+
setModelDiscoveryLoading(true);
|
|
281574
|
+
setDiscoveredModels(null);
|
|
281575
|
+
(async () => {
|
|
281576
|
+
try {
|
|
281577
|
+
const normalizedBase = baseUrl.replace(/\/+$/, "");
|
|
281578
|
+
const modelsUrl = normalizedBase.endsWith("/v1") ? `${normalizedBase}/models` : `${normalizedBase}/v1/models`;
|
|
281579
|
+
const headers = {};
|
|
281580
|
+
if (draft.apiKey?.trim()) {
|
|
281581
|
+
headers.Authorization = `Bearer ${draft.apiKey.trim()}`;
|
|
281582
|
+
}
|
|
281583
|
+
const response = await axios_default.get(modelsUrl, {
|
|
281584
|
+
headers,
|
|
281585
|
+
timeout: 5000
|
|
281586
|
+
});
|
|
281587
|
+
if (cancelled)
|
|
281588
|
+
return;
|
|
281589
|
+
const models = (response.data?.data ?? []).map((m) => m.id ?? "").filter((id) => id.length > 0);
|
|
281590
|
+
setDiscoveredModels(models.length > 0 ? models : null);
|
|
281591
|
+
} catch {
|
|
281592
|
+
if (!cancelled)
|
|
281593
|
+
setDiscoveredModels(null);
|
|
281594
|
+
} finally {
|
|
281595
|
+
if (!cancelled)
|
|
281596
|
+
setModelDiscoveryLoading(false);
|
|
281597
|
+
}
|
|
281598
|
+
})();
|
|
281599
|
+
return () => {
|
|
281600
|
+
cancelled = true;
|
|
281601
|
+
};
|
|
281602
|
+
}, [screen, formStepIndex, draft.baseUrl, draft.apiKey]);
|
|
281564
281603
|
useKeybinding("confirm:no", handleBackFromForm, {
|
|
281565
281604
|
context: "Settings",
|
|
281566
281605
|
isActive: screen === "form"
|
|
@@ -281762,6 +281801,8 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281762
281801
|
}, undefined, true, undefined, this);
|
|
281763
281802
|
}
|
|
281764
281803
|
function renderForm() {
|
|
281804
|
+
const isModelStep = formStepIndex === 3 && currentStepKey === "model";
|
|
281805
|
+
const showModelPicker = isModelStep && discoveredModels && discoveredModels.length > 0;
|
|
281765
281806
|
return /* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedBox_default, {
|
|
281766
281807
|
flexDirection: "column",
|
|
281767
281808
|
gap: 1,
|
|
@@ -281794,7 +281835,34 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281794
281835
|
currentStep.label
|
|
281795
281836
|
]
|
|
281796
281837
|
}, undefined, true, undefined, this),
|
|
281797
|
-
/* @__PURE__ */ jsx_dev_runtime63.jsxDEV(
|
|
281838
|
+
isModelStep && modelDiscoveryLoading ? /* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedText, {
|
|
281839
|
+
dimColor: true,
|
|
281840
|
+
children: "Fetching available models from endpoint…"
|
|
281841
|
+
}, undefined, false, undefined, this) : showModelPicker ? /* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedBox_default, {
|
|
281842
|
+
flexDirection: "column",
|
|
281843
|
+
children: /* @__PURE__ */ jsx_dev_runtime63.jsxDEV(Select, {
|
|
281844
|
+
options: [
|
|
281845
|
+
...discoveredModels.map((m) => ({
|
|
281846
|
+
value: m,
|
|
281847
|
+
label: m
|
|
281848
|
+
})),
|
|
281849
|
+
{
|
|
281850
|
+
value: "__manual__",
|
|
281851
|
+
label: "✎ Enter manually…",
|
|
281852
|
+
description: "Type a model name instead"
|
|
281853
|
+
}
|
|
281854
|
+
],
|
|
281855
|
+
onChange: (value) => {
|
|
281856
|
+
if (value === "__manual__") {
|
|
281857
|
+
setDiscoveredModels(null);
|
|
281858
|
+
return;
|
|
281859
|
+
}
|
|
281860
|
+
handleFormSubmit(value);
|
|
281861
|
+
},
|
|
281862
|
+
onCancel: handleBackFromForm,
|
|
281863
|
+
visibleOptionCount: Math.min(12, discoveredModels.length + 1)
|
|
281864
|
+
}, undefined, false, undefined, this)
|
|
281865
|
+
}, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedBox_default, {
|
|
281798
281866
|
flexDirection: "row",
|
|
281799
281867
|
gap: 1,
|
|
281800
281868
|
children: [
|
|
@@ -281823,7 +281891,7 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281823
281891
|
}, undefined, false, undefined, this),
|
|
281824
281892
|
/* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedText, {
|
|
281825
281893
|
dimColor: true,
|
|
281826
|
-
children: "Press Enter to continue. Press Esc to go back."
|
|
281894
|
+
children: showModelPicker ? "Select a model. Press Esc to go back." : "Press Enter to continue. Press Esc to go back."
|
|
281827
281895
|
}, undefined, false, undefined, this)
|
|
281828
281896
|
]
|
|
281829
281897
|
}, undefined, true, undefined, this);
|
|
@@ -282156,6 +282224,7 @@ function ProviderManager({ mode, onDone }) {
|
|
|
282156
282224
|
}
|
|
282157
282225
|
var React25, jsx_dev_runtime63, FORM_STEPS, GITHUB_PROVIDER_ID = "__github_models__", GITHUB_PROVIDER_LABEL = "GitHub Models", GITHUB_PROVIDER_DEFAULT_MODEL = "github:copilot", GITHUB_PROVIDER_DEFAULT_BASE_URL = "https://models.github.ai/inference", CODEX_OAUTH_PROVIDER_NAME = "Codex OAuth", CODEX_OAUTH_PROVIDER_MODEL = "codexplan";
|
|
282158
282226
|
var init_ProviderManager = __esm(() => {
|
|
282227
|
+
init_axios2();
|
|
282159
282228
|
init_figures();
|
|
282160
282229
|
init_providerConfig();
|
|
282161
282230
|
init_ink2();
|
|
@@ -282188,18 +282257,18 @@ var init_ProviderManager = __esm(() => {
|
|
|
282188
282257
|
placeholder: "e.g. http://localhost:11434/v1",
|
|
282189
282258
|
helpText: "API base URL used for this provider profile."
|
|
282190
282259
|
},
|
|
282191
|
-
{
|
|
282192
|
-
key: "model",
|
|
282193
|
-
label: "Default model",
|
|
282194
|
-
placeholder: "e.g. llama3.1:8b or glm-4.7, glm-4.7-flash",
|
|
282195
|
-
helpText: "Model name(s) to use. Separate multiple with commas; first is default."
|
|
282196
|
-
},
|
|
282197
282260
|
{
|
|
282198
282261
|
key: "apiKey",
|
|
282199
282262
|
label: "API key",
|
|
282200
282263
|
placeholder: "Leave empty if your provider does not require one",
|
|
282201
282264
|
helpText: "Optional. Press Enter with empty value to skip.",
|
|
282202
282265
|
optional: true
|
|
282266
|
+
},
|
|
282267
|
+
{
|
|
282268
|
+
key: "model",
|
|
282269
|
+
label: "Default model",
|
|
282270
|
+
placeholder: "e.g. llama3.1:8b or glm-4.7, glm-4.7-flash",
|
|
282271
|
+
helpText: "Model name(s) to use. Separate multiple with commas; first is default."
|
|
282203
282272
|
}
|
|
282204
282273
|
];
|
|
282205
282274
|
});
|
|
@@ -382821,7 +382890,7 @@ function getAnthropicEnvMetadata() {
|
|
|
382821
382890
|
function getBuildAgeMinutes() {
|
|
382822
382891
|
if (false)
|
|
382823
382892
|
;
|
|
382824
|
-
const buildTime = new Date("2026-04-
|
|
382893
|
+
const buildTime = new Date("2026-04-25T03:07:55.863Z").getTime();
|
|
382825
382894
|
if (isNaN(buildTime))
|
|
382826
382895
|
return;
|
|
382827
382896
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -410000,7 +410069,7 @@ function buildPrimarySection() {
|
|
|
410000
410069
|
}, undefined, false, undefined, this);
|
|
410001
410070
|
return [{
|
|
410002
410071
|
label: "Version",
|
|
410003
|
-
value: "0.3.
|
|
410072
|
+
value: "0.3.9"
|
|
410004
410073
|
}, {
|
|
410005
410074
|
label: "Session name",
|
|
410006
410075
|
value: nameValue
|
|
@@ -449627,7 +449696,7 @@ function getStartupLines(termWidth) {
|
|
|
449627
449696
|
const sLen = ` ● ${sL} buffer ready — /help for breach controls`.length;
|
|
449628
449697
|
out.push(centerAnsiLine(boxRow(sRow, W2, sLen), tw));
|
|
449629
449698
|
out.push(centerAnsiLine(`${rgb3(...BORDER)}└${"─".repeat(W2 - 2)}┘${RESET2}`, tw));
|
|
449630
|
-
out.push(centerAnsiLine(`${rgb3(...DIMCOL)}STRATAGEM X7${RESET2} ${rgb3(...ACCENT)}v${"0.3.
|
|
449699
|
+
out.push(centerAnsiLine(`${rgb3(...DIMCOL)}STRATAGEM X7${RESET2} ${rgb3(...ACCENT)}v${"0.3.9"}${RESET2} ${rgb3(...CYAN)}// breach link stable${RESET2}`, tw));
|
|
449631
449700
|
out.push("");
|
|
449632
449701
|
return out;
|
|
449633
449702
|
}
|
|
@@ -478176,7 +478245,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
478176
478245
|
var call60 = async () => {
|
|
478177
478246
|
return {
|
|
478178
478247
|
type: "text",
|
|
478179
|
-
value: `${"99.0.0"} (built ${"2026-04-
|
|
478248
|
+
value: `${"99.0.0"} (built ${"2026-04-25T03:07:55.863Z"})`
|
|
478180
478249
|
};
|
|
478181
478250
|
}, version2, version_default;
|
|
478182
478251
|
var init_version = __esm(() => {
|
|
@@ -553567,7 +553636,7 @@ function WelcomeV2() {
|
|
|
553567
553636
|
dimColor: true,
|
|
553568
553637
|
children: [
|
|
553569
553638
|
"v",
|
|
553570
|
-
"0.3.
|
|
553639
|
+
"0.3.9",
|
|
553571
553640
|
" "
|
|
553572
553641
|
]
|
|
553573
553642
|
}, undefined, true, undefined, this)
|
|
@@ -573585,7 +573654,7 @@ Usage: stx7 --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
573585
573654
|
pendingHookMessages
|
|
573586
573655
|
}, renderAndRun);
|
|
573587
573656
|
}
|
|
573588
|
-
}).version("0.3.
|
|
573657
|
+
}).version("0.3.9 (STRATAGEM X7)", "-v, --version", "Output the version number");
|
|
573589
573658
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
573590
573659
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
573591
573660
|
if (canUserConfigureAdvisor()) {
|
|
@@ -574114,7 +574183,7 @@ if (false) {}
|
|
|
574114
574183
|
async function main2() {
|
|
574115
574184
|
const args = process.argv.slice(2);
|
|
574116
574185
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
574117
|
-
console.log(`${"0.3.
|
|
574186
|
+
console.log(`${"0.3.9"} (STRATAGEM X7)`);
|
|
574118
574187
|
return;
|
|
574119
574188
|
}
|
|
574120
574189
|
if (args.includes("--provider")) {
|
|
@@ -574236,4 +574305,4 @@ async function main2() {
|
|
|
574236
574305
|
}
|
|
574237
574306
|
main2();
|
|
574238
574307
|
|
|
574239
|
-
//# debugId=
|
|
574308
|
+
//# debugId=FBB2A0D30CC3435964756E2164756E21
|