stratagem-x7 0.3.8 → 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 -16
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -281068,6 +281068,8 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281068
281068
|
const [ollamaSelection, setOllamaSelection] = React25.useState({
|
|
281069
281069
|
state: "idle"
|
|
281070
281070
|
});
|
|
281071
|
+
const [discoveredModels, setDiscoveredModels] = React25.useState(null);
|
|
281072
|
+
const [modelDiscoveryLoading, setModelDiscoveryLoading] = React25.useState(false);
|
|
281071
281073
|
const currentStep = FORM_STEPS[formStepIndex] ?? FORM_STEPS[0];
|
|
281072
281074
|
const currentStepKey = currentStep.key;
|
|
281073
281075
|
const currentValue = draft[currentStepKey];
|
|
@@ -281558,6 +281560,46 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281558
281560
|
}
|
|
281559
281561
|
returnToMenu();
|
|
281560
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]);
|
|
281561
281603
|
useKeybinding("confirm:no", handleBackFromForm, {
|
|
281562
281604
|
context: "Settings",
|
|
281563
281605
|
isActive: screen === "form"
|
|
@@ -281759,6 +281801,8 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281759
281801
|
}, undefined, true, undefined, this);
|
|
281760
281802
|
}
|
|
281761
281803
|
function renderForm() {
|
|
281804
|
+
const isModelStep = formStepIndex === 3 && currentStepKey === "model";
|
|
281805
|
+
const showModelPicker = isModelStep && discoveredModels && discoveredModels.length > 0;
|
|
281762
281806
|
return /* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedBox_default, {
|
|
281763
281807
|
flexDirection: "column",
|
|
281764
281808
|
gap: 1,
|
|
@@ -281791,7 +281835,34 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281791
281835
|
currentStep.label
|
|
281792
281836
|
]
|
|
281793
281837
|
}, undefined, true, undefined, this),
|
|
281794
|
-
/* @__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, {
|
|
281795
281866
|
flexDirection: "row",
|
|
281796
281867
|
gap: 1,
|
|
281797
281868
|
children: [
|
|
@@ -281820,7 +281891,7 @@ function ProviderManager({ mode, onDone }) {
|
|
|
281820
281891
|
}, undefined, false, undefined, this),
|
|
281821
281892
|
/* @__PURE__ */ jsx_dev_runtime63.jsxDEV(ThemedText, {
|
|
281822
281893
|
dimColor: true,
|
|
281823
|
-
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."
|
|
281824
281895
|
}, undefined, false, undefined, this)
|
|
281825
281896
|
]
|
|
281826
281897
|
}, undefined, true, undefined, this);
|
|
@@ -282153,6 +282224,7 @@ function ProviderManager({ mode, onDone }) {
|
|
|
282153
282224
|
}
|
|
282154
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";
|
|
282155
282226
|
var init_ProviderManager = __esm(() => {
|
|
282227
|
+
init_axios2();
|
|
282156
282228
|
init_figures();
|
|
282157
282229
|
init_providerConfig();
|
|
282158
282230
|
init_ink2();
|
|
@@ -282185,18 +282257,18 @@ var init_ProviderManager = __esm(() => {
|
|
|
282185
282257
|
placeholder: "e.g. http://localhost:11434/v1",
|
|
282186
282258
|
helpText: "API base URL used for this provider profile."
|
|
282187
282259
|
},
|
|
282188
|
-
{
|
|
282189
|
-
key: "model",
|
|
282190
|
-
label: "Default model",
|
|
282191
|
-
placeholder: "e.g. llama3.1:8b or glm-4.7, glm-4.7-flash",
|
|
282192
|
-
helpText: "Model name(s) to use. Separate multiple with commas; first is default."
|
|
282193
|
-
},
|
|
282194
282260
|
{
|
|
282195
282261
|
key: "apiKey",
|
|
282196
282262
|
label: "API key",
|
|
282197
282263
|
placeholder: "Leave empty if your provider does not require one",
|
|
282198
282264
|
helpText: "Optional. Press Enter with empty value to skip.",
|
|
282199
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."
|
|
282200
282272
|
}
|
|
282201
282273
|
];
|
|
282202
282274
|
});
|
|
@@ -382818,7 +382890,7 @@ function getAnthropicEnvMetadata() {
|
|
|
382818
382890
|
function getBuildAgeMinutes() {
|
|
382819
382891
|
if (false)
|
|
382820
382892
|
;
|
|
382821
|
-
const buildTime = new Date("2026-04-
|
|
382893
|
+
const buildTime = new Date("2026-04-25T03:07:55.863Z").getTime();
|
|
382822
382894
|
if (isNaN(buildTime))
|
|
382823
382895
|
return;
|
|
382824
382896
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -409997,7 +410069,7 @@ function buildPrimarySection() {
|
|
|
409997
410069
|
}, undefined, false, undefined, this);
|
|
409998
410070
|
return [{
|
|
409999
410071
|
label: "Version",
|
|
410000
|
-
value: "0.3.
|
|
410072
|
+
value: "0.3.9"
|
|
410001
410073
|
}, {
|
|
410002
410074
|
label: "Session name",
|
|
410003
410075
|
value: nameValue
|
|
@@ -449624,7 +449696,7 @@ function getStartupLines(termWidth) {
|
|
|
449624
449696
|
const sLen = ` ● ${sL} buffer ready — /help for breach controls`.length;
|
|
449625
449697
|
out.push(centerAnsiLine(boxRow(sRow, W2, sLen), tw));
|
|
449626
449698
|
out.push(centerAnsiLine(`${rgb3(...BORDER)}└${"─".repeat(W2 - 2)}┘${RESET2}`, tw));
|
|
449627
|
-
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));
|
|
449628
449700
|
out.push("");
|
|
449629
449701
|
return out;
|
|
449630
449702
|
}
|
|
@@ -478173,7 +478245,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
478173
478245
|
var call60 = async () => {
|
|
478174
478246
|
return {
|
|
478175
478247
|
type: "text",
|
|
478176
|
-
value: `${"99.0.0"} (built ${"2026-04-
|
|
478248
|
+
value: `${"99.0.0"} (built ${"2026-04-25T03:07:55.863Z"})`
|
|
478177
478249
|
};
|
|
478178
478250
|
}, version2, version_default;
|
|
478179
478251
|
var init_version = __esm(() => {
|
|
@@ -553564,7 +553636,7 @@ function WelcomeV2() {
|
|
|
553564
553636
|
dimColor: true,
|
|
553565
553637
|
children: [
|
|
553566
553638
|
"v",
|
|
553567
|
-
"0.3.
|
|
553639
|
+
"0.3.9",
|
|
553568
553640
|
" "
|
|
553569
553641
|
]
|
|
553570
553642
|
}, undefined, true, undefined, this)
|
|
@@ -573582,7 +573654,7 @@ Usage: stx7 --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
573582
573654
|
pendingHookMessages
|
|
573583
573655
|
}, renderAndRun);
|
|
573584
573656
|
}
|
|
573585
|
-
}).version("0.3.
|
|
573657
|
+
}).version("0.3.9 (STRATAGEM X7)", "-v, --version", "Output the version number");
|
|
573586
573658
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
573587
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.");
|
|
573588
573660
|
if (canUserConfigureAdvisor()) {
|
|
@@ -574111,7 +574183,7 @@ if (false) {}
|
|
|
574111
574183
|
async function main2() {
|
|
574112
574184
|
const args = process.argv.slice(2);
|
|
574113
574185
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
574114
|
-
console.log(`${"0.3.
|
|
574186
|
+
console.log(`${"0.3.9"} (STRATAGEM X7)`);
|
|
574115
574187
|
return;
|
|
574116
574188
|
}
|
|
574117
574189
|
if (args.includes("--provider")) {
|
|
@@ -574233,4 +574305,4 @@ async function main2() {
|
|
|
574233
574305
|
}
|
|
574234
574306
|
main2();
|
|
574235
574307
|
|
|
574236
|
-
//# debugId=
|
|
574308
|
+
//# debugId=FBB2A0D30CC3435964756E2164756E21
|