fss-link 1.4.5 → 1.4.7
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/bundle/fss-link.js +585 -560
- package/package.json +1 -1
package/bundle/fss-link.js
CHANGED
|
@@ -22379,7 +22379,7 @@ async function createContentGeneratorConfig(config, authType) {
|
|
|
22379
22379
|
async function createContentGenerator(config, gcConfig, sessionId2) {
|
|
22380
22380
|
if (DEBUG_CONTENT)
|
|
22381
22381
|
console.log(`\u{1F41B} DEBUG createContentGenerator: authType=${config.authType}, apiKey=${config.apiKey}, baseUrl=${config.baseUrl}`);
|
|
22382
|
-
const version = "1.4.
|
|
22382
|
+
const version = "1.4.7";
|
|
22383
22383
|
const userAgent = `FSS-Link/${version} (${process.platform}; ${process.arch})`;
|
|
22384
22384
|
const baseHeaders = {
|
|
22385
22385
|
"User-Agent": userAgent
|
|
@@ -96074,7 +96074,7 @@ async function getPackageJson() {
|
|
|
96074
96074
|
// packages/cli/src/utils/version.ts
|
|
96075
96075
|
async function getCliVersion() {
|
|
96076
96076
|
const pkgJson = await getPackageJson();
|
|
96077
|
-
return "1.4.
|
|
96077
|
+
return "1.4.7";
|
|
96078
96078
|
}
|
|
96079
96079
|
|
|
96080
96080
|
// packages/cli/src/ui/commands/aboutCommand.ts
|
|
@@ -96126,7 +96126,7 @@ import open4 from "open";
|
|
|
96126
96126
|
import process11 from "node:process";
|
|
96127
96127
|
|
|
96128
96128
|
// packages/cli/src/generated/git-commit.ts
|
|
96129
|
-
var GIT_COMMIT_INFO = "
|
|
96129
|
+
var GIT_COMMIT_INFO = "322fc89a";
|
|
96130
96130
|
|
|
96131
96131
|
// packages/cli/src/ui/commands/bugCommand.ts
|
|
96132
96132
|
init_dist2();
|
|
@@ -120421,7 +120421,6 @@ function LMStudioModelPrompt({
|
|
|
120421
120421
|
init_dist2();
|
|
120422
120422
|
import { useState as useState33, useEffect as useEffect32 } from "react";
|
|
120423
120423
|
import { Box as Box19, Text as Text26, useInput as useInput4 } from "ink";
|
|
120424
|
-
import TextInput from "ink-text-input";
|
|
120425
120424
|
|
|
120426
120425
|
// packages/cli/src/utils/modelFetcher.ts
|
|
120427
120426
|
async function fetchModelsFromCustomEndpoint(baseUrl, providerType, apiKey) {
|
|
@@ -120433,6 +120432,8 @@ async function fetchModelsFromCustomEndpoint(baseUrl, providerType, apiKey) {
|
|
|
120433
120432
|
if (apiKey && apiKey.trim() !== "") {
|
|
120434
120433
|
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
120435
120434
|
}
|
|
120435
|
+
console.error(`[DEBUG] fetchModelsFromCustomEndpoint: ${url2}`);
|
|
120436
|
+
console.error(`[DEBUG] Provider: ${providerType}, Has API key: ${!!apiKey}`);
|
|
120436
120437
|
try {
|
|
120437
120438
|
const controller = new AbortController();
|
|
120438
120439
|
const timeoutId = setTimeout(() => controller.abort(), 1e4);
|
|
@@ -120463,21 +120464,45 @@ async function fetchModelsFromCustomEndpoint(baseUrl, providerType, apiKey) {
|
|
|
120463
120464
|
object: m.object
|
|
120464
120465
|
}));
|
|
120465
120466
|
} catch (error) {
|
|
120467
|
+
console.error("[DEBUG] Fetch error caught:");
|
|
120468
|
+
console.error("[DEBUG] Error type:", error instanceof Error ? "Error" : typeof error);
|
|
120466
120469
|
if (error instanceof Error) {
|
|
120470
|
+
console.error("[DEBUG] Error name:", error.name);
|
|
120471
|
+
console.error("[DEBUG] Error message:", error.message);
|
|
120472
|
+
console.error("[DEBUG] Error stack:", error.stack);
|
|
120473
|
+
console.error("[DEBUG] Error cause:", error.cause);
|
|
120467
120474
|
if (error.name === "AbortError") {
|
|
120468
120475
|
throw new Error("Connection timeout (10s) - endpoint did not respond");
|
|
120469
120476
|
}
|
|
120470
120477
|
if (error.message.includes("fetch failed")) {
|
|
120471
|
-
throw new Error(`Network error - cannot reach ${normalizedBase}: ${error.message}`);
|
|
120478
|
+
throw new Error(`Network error - cannot reach ${normalizedBase}: ${error.message} (cause: ${error.cause})`);
|
|
120472
120479
|
}
|
|
120473
120480
|
throw error;
|
|
120474
120481
|
}
|
|
120482
|
+
console.error("[DEBUG] Non-Error object:", error);
|
|
120475
120483
|
throw new Error(`Connection failed: ${String(error)}`);
|
|
120476
120484
|
}
|
|
120477
120485
|
}
|
|
120478
120486
|
|
|
120487
|
+
// packages/cli/src/ui/components/shared/PasteAwareTextInput.tsx
|
|
120488
|
+
import TextInput from "ink-text-input";
|
|
120489
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
120490
|
+
function stripBracketedPaste(value) {
|
|
120491
|
+
return value.replace(/\x1b\[200~/g, "").replace(/\x1b\[201~/g, "").replace(/~200~/g, "").replace(/~201~/g, "");
|
|
120492
|
+
}
|
|
120493
|
+
function PasteAwareTextInput({
|
|
120494
|
+
onChange,
|
|
120495
|
+
...props
|
|
120496
|
+
}) {
|
|
120497
|
+
const handleChange = (value) => {
|
|
120498
|
+
const cleaned = stripBracketedPaste(value);
|
|
120499
|
+
onChange(cleaned);
|
|
120500
|
+
};
|
|
120501
|
+
return /* @__PURE__ */ jsx24(TextInput, { ...props, onChange: handleChange });
|
|
120502
|
+
}
|
|
120503
|
+
|
|
120479
120504
|
// packages/cli/src/ui/components/AddCustomEndpointDialog.tsx
|
|
120480
|
-
import { Fragment as Fragment4, jsx as
|
|
120505
|
+
import { Fragment as Fragment4, jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
120481
120506
|
function AddCustomEndpointDialog({
|
|
120482
120507
|
onSubmit,
|
|
120483
120508
|
onCancel
|
|
@@ -120605,13 +120630,13 @@ function AddCustomEndpointDialog({
|
|
|
120605
120630
|
switch (step) {
|
|
120606
120631
|
case "name":
|
|
120607
120632
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120608
|
-
/* @__PURE__ */
|
|
120609
|
-
/* @__PURE__ */
|
|
120610
|
-
/* @__PURE__ */
|
|
120633
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Step 1: Endpoint Name" }),
|
|
120634
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { children: "Enter a friendly name for this endpoint:" }) }),
|
|
120635
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: 'Example: "RTX3090 Proxy" or "Inference Server"' }) }),
|
|
120611
120636
|
/* @__PURE__ */ jsxs22(Box19, { marginTop: 1, children: [
|
|
120612
|
-
/* @__PURE__ */
|
|
120613
|
-
/* @__PURE__ */
|
|
120614
|
-
|
|
120637
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentPurple, children: "> " }),
|
|
120638
|
+
/* @__PURE__ */ jsx25(
|
|
120639
|
+
PasteAwareTextInput,
|
|
120615
120640
|
{
|
|
120616
120641
|
value: name2,
|
|
120617
120642
|
onChange: setName,
|
|
@@ -120619,21 +120644,21 @@ function AddCustomEndpointDialog({
|
|
|
120619
120644
|
}
|
|
120620
120645
|
)
|
|
120621
120646
|
] }),
|
|
120622
|
-
/* @__PURE__ */
|
|
120647
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: "Press Enter to continue, Esc to cancel" }) })
|
|
120623
120648
|
] });
|
|
120624
120649
|
case "url":
|
|
120625
120650
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120626
|
-
/* @__PURE__ */
|
|
120627
|
-
/* @__PURE__ */
|
|
120651
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Step 2: Endpoint URL" }),
|
|
120652
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120628
120653
|
"Endpoint name: ",
|
|
120629
|
-
/* @__PURE__ */
|
|
120654
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: name2 })
|
|
120630
120655
|
] }) }),
|
|
120631
|
-
/* @__PURE__ */
|
|
120632
|
-
/* @__PURE__ */
|
|
120656
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { children: "Enter the base URL for this endpoint:" }) }),
|
|
120657
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: 'Example: "https://rtx3090.bobai.com.au/v1"' }) }),
|
|
120633
120658
|
/* @__PURE__ */ jsxs22(Box19, { marginTop: 1, children: [
|
|
120634
|
-
/* @__PURE__ */
|
|
120635
|
-
/* @__PURE__ */
|
|
120636
|
-
|
|
120659
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentPurple, children: "> " }),
|
|
120660
|
+
/* @__PURE__ */ jsx25(
|
|
120661
|
+
PasteAwareTextInput,
|
|
120637
120662
|
{
|
|
120638
120663
|
value: url2,
|
|
120639
120664
|
onChange: setUrl,
|
|
@@ -120641,20 +120666,20 @@ function AddCustomEndpointDialog({
|
|
|
120641
120666
|
}
|
|
120642
120667
|
)
|
|
120643
120668
|
] }),
|
|
120644
|
-
/* @__PURE__ */
|
|
120669
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: "Press Enter to continue, Esc to cancel" }) })
|
|
120645
120670
|
] });
|
|
120646
120671
|
case "provider":
|
|
120647
120672
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120648
|
-
/* @__PURE__ */
|
|
120649
|
-
/* @__PURE__ */
|
|
120673
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Step 3: Provider Type" }),
|
|
120674
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120650
120675
|
"Endpoint: ",
|
|
120651
|
-
/* @__PURE__ */
|
|
120676
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: name2 }),
|
|
120652
120677
|
" (",
|
|
120653
120678
|
url2,
|
|
120654
120679
|
")"
|
|
120655
120680
|
] }) }),
|
|
120656
|
-
/* @__PURE__ */
|
|
120657
|
-
/* @__PURE__ */
|
|
120681
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { children: "Select the API type:" }) }),
|
|
120682
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, flexDirection: "column", children: providerOptions.map((option2, index) => {
|
|
120658
120683
|
const isSelected = index === selectedProviderIndex;
|
|
120659
120684
|
const prefix = isSelected ? ">" : " ";
|
|
120660
120685
|
return /* @__PURE__ */ jsxs22(
|
|
@@ -120671,24 +120696,24 @@ function AddCustomEndpointDialog({
|
|
|
120671
120696
|
option2.value
|
|
120672
120697
|
);
|
|
120673
120698
|
}) }),
|
|
120674
|
-
/* @__PURE__ */
|
|
120699
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: "\u2191/\u2193 to navigate, Enter to select, Esc to cancel" }) })
|
|
120675
120700
|
] });
|
|
120676
120701
|
case "apikey":
|
|
120677
120702
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120678
|
-
/* @__PURE__ */
|
|
120679
|
-
/* @__PURE__ */
|
|
120703
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Step 4: API Key (Optional)" }),
|
|
120704
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120680
120705
|
"Endpoint: ",
|
|
120681
|
-
/* @__PURE__ */
|
|
120706
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: name2 }),
|
|
120682
120707
|
" (",
|
|
120683
120708
|
providerOptions[selectedProviderIndex].label,
|
|
120684
120709
|
")"
|
|
120685
120710
|
] }) }),
|
|
120686
|
-
/* @__PURE__ */
|
|
120687
|
-
/* @__PURE__ */
|
|
120711
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { children: "Enter API key if required (leave empty if none):" }) }),
|
|
120712
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.AccentYellow, children: "\u2139 External endpoints usually require authentication" }) }),
|
|
120688
120713
|
/* @__PURE__ */ jsxs22(Box19, { marginTop: 1, children: [
|
|
120689
|
-
/* @__PURE__ */
|
|
120690
|
-
/* @__PURE__ */
|
|
120691
|
-
|
|
120714
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentPurple, children: "> " }),
|
|
120715
|
+
/* @__PURE__ */ jsx25(
|
|
120716
|
+
PasteAwareTextInput,
|
|
120692
120717
|
{
|
|
120693
120718
|
value: apiKey,
|
|
120694
120719
|
onChange: setApiKey,
|
|
@@ -120696,66 +120721,66 @@ function AddCustomEndpointDialog({
|
|
|
120696
120721
|
}
|
|
120697
120722
|
)
|
|
120698
120723
|
] }),
|
|
120699
|
-
/* @__PURE__ */
|
|
120724
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: "Press Enter to fetch models, Esc to cancel" }) })
|
|
120700
120725
|
] });
|
|
120701
120726
|
case "model-fetch":
|
|
120702
120727
|
if (fetchError) {
|
|
120703
120728
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120704
|
-
/* @__PURE__ */
|
|
120705
|
-
/* @__PURE__ */
|
|
120729
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentRed, children: "Connection Failed" }),
|
|
120730
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120706
120731
|
"Name: ",
|
|
120707
|
-
/* @__PURE__ */
|
|
120732
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentCyan, children: name2 })
|
|
120708
120733
|
] }) }),
|
|
120709
|
-
/* @__PURE__ */
|
|
120734
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120710
120735
|
"URL: ",
|
|
120711
|
-
/* @__PURE__ */
|
|
120736
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentCyan, children: url2 })
|
|
120712
120737
|
] }) }),
|
|
120713
|
-
/* @__PURE__ */
|
|
120738
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120714
120739
|
"Provider: ",
|
|
120715
|
-
/* @__PURE__ */
|
|
120740
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentCyan, children: providerOptions[selectedProviderIndex].label })
|
|
120716
120741
|
] }) }),
|
|
120717
|
-
/* @__PURE__ */
|
|
120742
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120718
120743
|
"API Key: ",
|
|
120719
|
-
/* @__PURE__ */
|
|
120744
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentCyan, children: apiKey ? `${apiKey.substring(0, 20)}...` : "(none)" })
|
|
120720
120745
|
] }) }),
|
|
120721
|
-
/* @__PURE__ */
|
|
120746
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { color: Colors.AccentRed, children: [
|
|
120722
120747
|
"\u2716 Error: ",
|
|
120723
120748
|
fetchError
|
|
120724
120749
|
] }) }),
|
|
120725
|
-
/* @__PURE__ */
|
|
120750
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.AccentYellow, children: "What would you like to do?" }) }),
|
|
120726
120751
|
/* @__PURE__ */ jsxs22(Box19, { marginTop: 1, flexDirection: "column", children: [
|
|
120727
|
-
/* @__PURE__ */
|
|
120728
|
-
/* @__PURE__ */
|
|
120729
|
-
/* @__PURE__ */
|
|
120730
|
-
/* @__PURE__ */
|
|
120731
|
-
/* @__PURE__ */
|
|
120752
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: " [U] Edit URL" }),
|
|
120753
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: " [K] Edit API Key" }),
|
|
120754
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: " [P] Change Provider Type" }),
|
|
120755
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentBlue, children: " [R] Retry Connection" }),
|
|
120756
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: " [Esc] Cancel and Exit" })
|
|
120732
120757
|
] })
|
|
120733
120758
|
] });
|
|
120734
120759
|
}
|
|
120735
120760
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120736
|
-
/* @__PURE__ */
|
|
120737
|
-
/* @__PURE__ */
|
|
120761
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Fetching Models..." }),
|
|
120762
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120738
120763
|
"Connecting to ",
|
|
120739
|
-
/* @__PURE__ */
|
|
120764
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: url2 })
|
|
120740
120765
|
] }) }),
|
|
120741
|
-
/* @__PURE__ */
|
|
120766
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: "Please wait..." }) })
|
|
120742
120767
|
] });
|
|
120743
120768
|
case "model-select":
|
|
120744
120769
|
return /* @__PURE__ */ jsxs22(Fragment4, { children: [
|
|
120745
|
-
/* @__PURE__ */
|
|
120746
|
-
/* @__PURE__ */
|
|
120770
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Step 5: Select Model" }),
|
|
120771
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { children: [
|
|
120747
120772
|
"Endpoint: ",
|
|
120748
|
-
/* @__PURE__ */
|
|
120773
|
+
/* @__PURE__ */ jsx25(Text26, { color: Colors.AccentGreen, children: name2 }),
|
|
120749
120774
|
" (",
|
|
120750
120775
|
url2,
|
|
120751
120776
|
")"
|
|
120752
120777
|
] }) }),
|
|
120753
|
-
/* @__PURE__ */
|
|
120778
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text26, { color: Colors.AccentGreen, children: [
|
|
120754
120779
|
"\u2713 Found ",
|
|
120755
120780
|
availableModels.length,
|
|
120756
120781
|
" available models"
|
|
120757
120782
|
] }) }),
|
|
120758
|
-
/* @__PURE__ */
|
|
120783
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { children: "Choose a model to use:" }) }),
|
|
120759
120784
|
/* @__PURE__ */ jsxs22(Box19, { marginTop: 1, flexDirection: "column", children: [
|
|
120760
120785
|
availableModels.slice(0, 15).map((model, index) => {
|
|
120761
120786
|
const isSelected = index === selectedModelIndex;
|
|
@@ -120786,7 +120811,7 @@ function AddCustomEndpointDialog({
|
|
|
120786
120811
|
" more models"
|
|
120787
120812
|
] })
|
|
120788
120813
|
] }),
|
|
120789
|
-
/* @__PURE__ */
|
|
120814
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx25(Text26, { color: Colors.Gray, children: "\u2191/\u2193 to navigate, Enter to confirm, Esc to cancel" }) })
|
|
120790
120815
|
] });
|
|
120791
120816
|
}
|
|
120792
120817
|
};
|
|
@@ -120799,8 +120824,8 @@ function AddCustomEndpointDialog({
|
|
|
120799
120824
|
padding: 1,
|
|
120800
120825
|
width: "100%",
|
|
120801
120826
|
children: [
|
|
120802
|
-
/* @__PURE__ */
|
|
120803
|
-
/* @__PURE__ */
|
|
120827
|
+
/* @__PURE__ */ jsx25(Text26, { bold: true, color: Colors.AccentBlue, children: "Add Custom Endpoint" }),
|
|
120828
|
+
/* @__PURE__ */ jsx25(Box19, { marginTop: 1, flexDirection: "column", children: renderStep() })
|
|
120804
120829
|
]
|
|
120805
120830
|
}
|
|
120806
120831
|
);
|
|
@@ -120813,7 +120838,7 @@ init_modelManager();
|
|
|
120813
120838
|
import { useState as useState34, useEffect as useEffect33 } from "react";
|
|
120814
120839
|
import { Box as Box20, Text as Text27 } from "ink";
|
|
120815
120840
|
init_database();
|
|
120816
|
-
import { jsx as
|
|
120841
|
+
import { jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
120817
120842
|
var COMMON_ENDPOINTS = [
|
|
120818
120843
|
{
|
|
120819
120844
|
name: "OpenAI Official",
|
|
@@ -120870,12 +120895,12 @@ function OpenAIEndpointDialog({
|
|
|
120870
120895
|
}
|
|
120871
120896
|
}, { isActive: true });
|
|
120872
120897
|
if (isLoading) {
|
|
120873
|
-
return /* @__PURE__ */
|
|
120898
|
+
return /* @__PURE__ */ jsx26(Box20, { flexDirection: "column", padding: 1, children: /* @__PURE__ */ jsx26(Text27, { children: "Loading endpoints..." }) });
|
|
120874
120899
|
}
|
|
120875
120900
|
return /* @__PURE__ */ jsxs23(Box20, { flexDirection: "column", padding: 1, children: [
|
|
120876
|
-
/* @__PURE__ */
|
|
120877
|
-
/* @__PURE__ */
|
|
120878
|
-
/* @__PURE__ */
|
|
120901
|
+
/* @__PURE__ */ jsx26(Text27, { bold: true, color: Colors.AccentBlue, children: "Select OpenAI Endpoint" }),
|
|
120902
|
+
/* @__PURE__ */ jsx26(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx26(Text27, { children: "Choose an OpenAI API endpoint:" }) }),
|
|
120903
|
+
/* @__PURE__ */ jsx26(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx26(
|
|
120879
120904
|
RadioButtonSelect,
|
|
120880
120905
|
{
|
|
120881
120906
|
items: allEndpoints.map((e2) => ({
|
|
@@ -120886,13 +120911,13 @@ function OpenAIEndpointDialog({
|
|
|
120886
120911
|
onSelect: handleSelect
|
|
120887
120912
|
}
|
|
120888
120913
|
) }),
|
|
120889
|
-
/* @__PURE__ */
|
|
120914
|
+
/* @__PURE__ */ jsx26(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx26(Text27, { color: Colors.Gray, children: "(Press Escape to cancel)" }) })
|
|
120890
120915
|
] });
|
|
120891
120916
|
}
|
|
120892
120917
|
|
|
120893
120918
|
// packages/cli/src/ui/components/AuthDialog.tsx
|
|
120894
120919
|
init_database();
|
|
120895
|
-
import { jsx as
|
|
120920
|
+
import { jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
120896
120921
|
function parseDefaultAuthType(defaultAuthType) {
|
|
120897
120922
|
if (defaultAuthType && Object.values(AuthType).includes(defaultAuthType)) {
|
|
120898
120923
|
return defaultAuthType;
|
|
@@ -121112,7 +121137,7 @@ function AuthDialog({
|
|
|
121112
121137
|
{ isActive: true }
|
|
121113
121138
|
);
|
|
121114
121139
|
if (showOpenAIEndpointDialog) {
|
|
121115
|
-
return /* @__PURE__ */
|
|
121140
|
+
return /* @__PURE__ */ jsx27(
|
|
121116
121141
|
OpenAIEndpointDialog,
|
|
121117
121142
|
{
|
|
121118
121143
|
onSelect: handleEndpointSelect,
|
|
@@ -121121,7 +121146,7 @@ function AuthDialog({
|
|
|
121121
121146
|
);
|
|
121122
121147
|
}
|
|
121123
121148
|
if (showAddCustomEndpointDialog) {
|
|
121124
|
-
return /* @__PURE__ */
|
|
121149
|
+
return /* @__PURE__ */ jsx27(
|
|
121125
121150
|
AddCustomEndpointDialog,
|
|
121126
121151
|
{
|
|
121127
121152
|
onSubmit: handleCustomEndpointSubmit,
|
|
@@ -121130,7 +121155,7 @@ function AuthDialog({
|
|
|
121130
121155
|
);
|
|
121131
121156
|
}
|
|
121132
121157
|
if (showOpenAIKeyPrompt) {
|
|
121133
|
-
return /* @__PURE__ */
|
|
121158
|
+
return /* @__PURE__ */ jsx27(
|
|
121134
121159
|
OpenAIKeyPrompt,
|
|
121135
121160
|
{
|
|
121136
121161
|
onSubmit: handleOpenAIKeySubmit,
|
|
@@ -121140,7 +121165,7 @@ function AuthDialog({
|
|
|
121140
121165
|
);
|
|
121141
121166
|
}
|
|
121142
121167
|
if (showOllamaModelPrompt) {
|
|
121143
|
-
return /* @__PURE__ */
|
|
121168
|
+
return /* @__PURE__ */ jsx27(
|
|
121144
121169
|
OllamaModelPrompt,
|
|
121145
121170
|
{
|
|
121146
121171
|
onSubmit: handleOllamaModelSubmit,
|
|
@@ -121149,7 +121174,7 @@ function AuthDialog({
|
|
|
121149
121174
|
);
|
|
121150
121175
|
}
|
|
121151
121176
|
if (showLMStudioModelPrompt) {
|
|
121152
|
-
return /* @__PURE__ */
|
|
121177
|
+
return /* @__PURE__ */ jsx27(
|
|
121153
121178
|
LMStudioModelPrompt,
|
|
121154
121179
|
{
|
|
121155
121180
|
onSubmit: handleLMStudioModelSubmit,
|
|
@@ -121166,9 +121191,9 @@ function AuthDialog({
|
|
|
121166
121191
|
padding: 1,
|
|
121167
121192
|
width: "100%",
|
|
121168
121193
|
children: [
|
|
121169
|
-
/* @__PURE__ */
|
|
121170
|
-
/* @__PURE__ */
|
|
121171
|
-
/* @__PURE__ */
|
|
121194
|
+
/* @__PURE__ */ jsx27(Text28, { bold: true, children: "Get started" }),
|
|
121195
|
+
/* @__PURE__ */ jsx27(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx27(Text28, { children: "How would you like to authenticate for this project?" }) }),
|
|
121196
|
+
/* @__PURE__ */ jsx27(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx27(
|
|
121172
121197
|
RadioButtonSelect,
|
|
121173
121198
|
{
|
|
121174
121199
|
items,
|
|
@@ -121176,10 +121201,10 @@ function AuthDialog({
|
|
|
121176
121201
|
onSelect: handleAuthSelect
|
|
121177
121202
|
}
|
|
121178
121203
|
) }),
|
|
121179
|
-
errorMessage && /* @__PURE__ */
|
|
121180
|
-
/* @__PURE__ */
|
|
121181
|
-
/* @__PURE__ */
|
|
121182
|
-
/* @__PURE__ */
|
|
121204
|
+
errorMessage && /* @__PURE__ */ jsx27(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx27(Text28, { color: Colors.AccentRed, children: errorMessage }) }),
|
|
121205
|
+
/* @__PURE__ */ jsx27(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx27(Text28, { color: Colors.AccentPurple, children: "(Use Enter to Set Auth)" }) }),
|
|
121206
|
+
/* @__PURE__ */ jsx27(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx27(Text28, { children: "Terms of Services and Privacy Notice for FSS Link" }) }),
|
|
121207
|
+
/* @__PURE__ */ jsx27(Box21, { marginTop: 1, children: /* @__PURE__ */ jsx27(Text28, { color: Colors.AccentBlue, children: "https://github.com/FSSCoding/fss-link/blob/main/README.md" }) })
|
|
121183
121208
|
]
|
|
121184
121209
|
}
|
|
121185
121210
|
);
|
|
@@ -121189,7 +121214,7 @@ function AuthDialog({
|
|
|
121189
121214
|
import { useState as useState36, useEffect as useEffect34 } from "react";
|
|
121190
121215
|
import { Box as Box22, Text as Text29, useInput as useInput5 } from "ink";
|
|
121191
121216
|
init_modelManager();
|
|
121192
|
-
import { jsx as
|
|
121217
|
+
import { jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
121193
121218
|
function ProviderEndpointSelectionDialog({
|
|
121194
121219
|
onSelect,
|
|
121195
121220
|
onAddCustom,
|
|
@@ -121333,8 +121358,8 @@ function ProviderEndpointSelectionDialog({
|
|
|
121333
121358
|
padding: 1,
|
|
121334
121359
|
width: "100%",
|
|
121335
121360
|
children: [
|
|
121336
|
-
/* @__PURE__ */
|
|
121337
|
-
/* @__PURE__ */
|
|
121361
|
+
/* @__PURE__ */ jsx28(Text29, { bold: true, color: Colors.AccentBlue, children: "Provider / Endpoint Selection" }),
|
|
121362
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx28(Text29, { children: "Loading providers and endpoints..." }) })
|
|
121338
121363
|
]
|
|
121339
121364
|
}
|
|
121340
121365
|
);
|
|
@@ -121349,8 +121374,8 @@ function ProviderEndpointSelectionDialog({
|
|
|
121349
121374
|
padding: 1,
|
|
121350
121375
|
width: "100%",
|
|
121351
121376
|
children: [
|
|
121352
|
-
/* @__PURE__ */
|
|
121353
|
-
/* @__PURE__ */
|
|
121377
|
+
/* @__PURE__ */ jsx28(Text29, { bold: true, color: Colors.AccentBlue, children: "Switching Model" }),
|
|
121378
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsxs25(Text29, { children: [
|
|
121354
121379
|
"Activating ",
|
|
121355
121380
|
endpoints[selectedIndex]?.modelName || "model",
|
|
121356
121381
|
"..."
|
|
@@ -121369,9 +121394,9 @@ function ProviderEndpointSelectionDialog({
|
|
|
121369
121394
|
padding: 1,
|
|
121370
121395
|
width: "100%",
|
|
121371
121396
|
children: [
|
|
121372
|
-
/* @__PURE__ */
|
|
121373
|
-
/* @__PURE__ */
|
|
121374
|
-
/* @__PURE__ */
|
|
121397
|
+
/* @__PURE__ */ jsx28(Text29, { bold: true, color: Colors.AccentRed, children: "Provider Selection Error" }),
|
|
121398
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx28(Text29, { children: error }) }),
|
|
121399
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx28(Text29, { color: Colors.Gray, children: "Press Esc to cancel" }) })
|
|
121375
121400
|
]
|
|
121376
121401
|
}
|
|
121377
121402
|
);
|
|
@@ -121385,9 +121410,9 @@ function ProviderEndpointSelectionDialog({
|
|
|
121385
121410
|
padding: 1,
|
|
121386
121411
|
width: "100%",
|
|
121387
121412
|
children: [
|
|
121388
|
-
/* @__PURE__ */
|
|
121389
|
-
/* @__PURE__ */
|
|
121390
|
-
/* @__PURE__ */
|
|
121413
|
+
/* @__PURE__ */ jsx28(Text29, { bold: true, color: Colors.AccentBlue, children: "Model Selection" }),
|
|
121414
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx28(Text29, { children: "Select a model or provider:" }) }),
|
|
121415
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, flexDirection: "column", children: endpoints.map((endpoint, index) => {
|
|
121391
121416
|
const isSelected = index === selectedIndex;
|
|
121392
121417
|
const prefix = isSelected ? ">" : " ";
|
|
121393
121418
|
if (endpoint.type === "recent-model") {
|
|
@@ -121436,8 +121461,8 @@ function ProviderEndpointSelectionDialog({
|
|
|
121436
121461
|
`${endpoint.label}-${index}`
|
|
121437
121462
|
);
|
|
121438
121463
|
}) }),
|
|
121439
|
-
/* @__PURE__ */
|
|
121440
|
-
/* @__PURE__ */
|
|
121464
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx28(Text29, { color: Colors.Gray, children: "\u25CF = Active model | Recent models listed first" }) }),
|
|
121465
|
+
/* @__PURE__ */ jsx28(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx28(Text29, { color: Colors.Gray, children: "\u2191/\u2193 to navigate, Enter to select, Esc to cancel" }) })
|
|
121441
121466
|
]
|
|
121442
121467
|
}
|
|
121443
121468
|
);
|
|
@@ -121447,7 +121472,7 @@ function ProviderEndpointSelectionDialog({
|
|
|
121447
121472
|
import { useState as useState37, useEffect as useEffect35 } from "react";
|
|
121448
121473
|
import { Box as Box23, Text as Text30, useInput as useInput6 } from "ink";
|
|
121449
121474
|
init_modelManager();
|
|
121450
|
-
import { jsx as
|
|
121475
|
+
import { jsx as jsx29, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
121451
121476
|
function EnhancedModelSelectionDialog({
|
|
121452
121477
|
providerType,
|
|
121453
121478
|
endpointUrl,
|
|
@@ -121551,7 +121576,7 @@ function EnhancedModelSelectionDialog({
|
|
|
121551
121576
|
"Model Selection - ",
|
|
121552
121577
|
endpointLabel
|
|
121553
121578
|
] }),
|
|
121554
|
-
/* @__PURE__ */
|
|
121579
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text30, { children: "Loading models..." }) })
|
|
121555
121580
|
]
|
|
121556
121581
|
}
|
|
121557
121582
|
);
|
|
@@ -121566,8 +121591,8 @@ function EnhancedModelSelectionDialog({
|
|
|
121566
121591
|
padding: 1,
|
|
121567
121592
|
width: "100%",
|
|
121568
121593
|
children: [
|
|
121569
|
-
/* @__PURE__ */
|
|
121570
|
-
/* @__PURE__ */
|
|
121594
|
+
/* @__PURE__ */ jsx29(Text30, { bold: true, color: Colors.AccentBlue, children: "Switching Model" }),
|
|
121595
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsxs26(Text30, { children: [
|
|
121571
121596
|
"Activating ",
|
|
121572
121597
|
models[selectedIndex].modelName,
|
|
121573
121598
|
"..."
|
|
@@ -121586,9 +121611,9 @@ function EnhancedModelSelectionDialog({
|
|
|
121586
121611
|
padding: 1,
|
|
121587
121612
|
width: "100%",
|
|
121588
121613
|
children: [
|
|
121589
|
-
/* @__PURE__ */
|
|
121590
|
-
/* @__PURE__ */
|
|
121591
|
-
/* @__PURE__ */
|
|
121614
|
+
/* @__PURE__ */ jsx29(Text30, { bold: true, color: Colors.AccentRed, children: "Model Selection Error" }),
|
|
121615
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text30, { children: error }) }),
|
|
121616
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text30, { color: Colors.Gray, children: "Press Esc to go back" }) })
|
|
121592
121617
|
]
|
|
121593
121618
|
}
|
|
121594
121619
|
);
|
|
@@ -121606,14 +121631,14 @@ function EnhancedModelSelectionDialog({
|
|
|
121606
121631
|
"Model Selection - ",
|
|
121607
121632
|
endpointLabel
|
|
121608
121633
|
] }),
|
|
121609
|
-
/* @__PURE__ */
|
|
121610
|
-
/* @__PURE__ */
|
|
121634
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text30, { children: "Choose a model:" }) }),
|
|
121635
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, flexDirection: "column", children: models.map((model, index) => {
|
|
121611
121636
|
const isSelected = index === selectedIndex;
|
|
121612
121637
|
const prefix = isSelected ? ">" : " ";
|
|
121613
121638
|
const active = model.isActive ? "\u25CF " : "";
|
|
121614
121639
|
const favorite = model.isFavorite ? "\u2605 " : "";
|
|
121615
121640
|
const label = `${prefix} ${active}${favorite}${model.modelName}`;
|
|
121616
|
-
return /* @__PURE__ */
|
|
121641
|
+
return /* @__PURE__ */ jsx29(
|
|
121617
121642
|
Text30,
|
|
121618
121643
|
{
|
|
121619
121644
|
color: isSelected ? Colors.AccentBlue : Colors.Foreground,
|
|
@@ -121623,9 +121648,9 @@ function EnhancedModelSelectionDialog({
|
|
|
121623
121648
|
model.id || index
|
|
121624
121649
|
);
|
|
121625
121650
|
}) }),
|
|
121626
|
-
/* @__PURE__ */
|
|
121627
|
-
/* @__PURE__ */
|
|
121628
|
-
/* @__PURE__ */
|
|
121651
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text30, { color: Colors.Gray, children: "\u25CF = Active \u2605 = Favorite" }) }),
|
|
121652
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsx29(Text30, { color: Colors.Gray, children: "Enter to switch, F to toggle favorite, Esc to go back" }) }),
|
|
121653
|
+
/* @__PURE__ */ jsx29(Box23, { marginTop: 1, children: /* @__PURE__ */ jsxs26(Text30, { color: Colors.Gray, children: [
|
|
121629
121654
|
"Endpoint: ",
|
|
121630
121655
|
endpointUrl || "default"
|
|
121631
121656
|
] }) })
|
|
@@ -121636,7 +121661,7 @@ function EnhancedModelSelectionDialog({
|
|
|
121636
121661
|
|
|
121637
121662
|
// packages/cli/src/ui/components/WelcomeBackDialog.tsx
|
|
121638
121663
|
import { Box as Box24, Text as Text31 } from "ink";
|
|
121639
|
-
import { Fragment as Fragment5, jsx as
|
|
121664
|
+
import { Fragment as Fragment5, jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
121640
121665
|
var WelcomeBackDialog = ({
|
|
121641
121666
|
projectSummary,
|
|
121642
121667
|
onContinue,
|
|
@@ -121736,31 +121761,31 @@ var WelcomeBackDialog = ({
|
|
|
121736
121761
|
}
|
|
121737
121762
|
};
|
|
121738
121763
|
return /* @__PURE__ */ jsxs27(Box24, { flexDirection: "column", padding: 1, children: [
|
|
121739
|
-
/* @__PURE__ */
|
|
121764
|
+
/* @__PURE__ */ jsx30(Box24, { marginBottom: 1, children: /* @__PURE__ */ jsx30(Text31, { bold: true, color: Colors.AccentPurple, children: "Welcome Back to FSS Link" }) }),
|
|
121740
121765
|
/* @__PURE__ */ jsxs27(Box24, { flexDirection: "column", marginBottom: 2, paddingX: 1, children: [
|
|
121741
|
-
projectSummary.projectGoal && /* @__PURE__ */
|
|
121742
|
-
/* @__PURE__ */
|
|
121766
|
+
projectSummary.projectGoal && /* @__PURE__ */ jsx30(Box24, { marginBottom: 1, children: /* @__PURE__ */ jsxs27(Text31, { color: Colors.Foreground, children: [
|
|
121767
|
+
/* @__PURE__ */ jsx30(Text31, { bold: true, children: "Project:" }),
|
|
121743
121768
|
" ",
|
|
121744
121769
|
projectSummary.projectGoal
|
|
121745
121770
|
] }) }),
|
|
121746
121771
|
/* @__PURE__ */ jsxs27(Box24, { flexDirection: "row", marginBottom: 1, children: [
|
|
121747
|
-
/* @__PURE__ */
|
|
121748
|
-
/* @__PURE__ */
|
|
121772
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Last worked: " }),
|
|
121773
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Foreground, children: projectSummary.timeAgo })
|
|
121749
121774
|
] }),
|
|
121750
121775
|
/* @__PURE__ */ jsxs27(Box24, { flexDirection: "row", marginBottom: 1, children: [
|
|
121751
|
-
/* @__PURE__ */
|
|
121752
|
-
/* @__PURE__ */
|
|
121776
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Sessions: " }),
|
|
121777
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Foreground, children: projectSummary.totalSessions }),
|
|
121753
121778
|
projectSummary.activeSessions > 0 && /* @__PURE__ */ jsxs27(Fragment5, { children: [
|
|
121754
|
-
/* @__PURE__ */
|
|
121779
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: " (" }),
|
|
121755
121780
|
/* @__PURE__ */ jsxs27(Text31, { color: Colors.AccentGreen, children: [
|
|
121756
121781
|
projectSummary.activeSessions,
|
|
121757
121782
|
" active"
|
|
121758
121783
|
] }),
|
|
121759
|
-
/* @__PURE__ */
|
|
121784
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: ")" })
|
|
121760
121785
|
] })
|
|
121761
121786
|
] }),
|
|
121762
121787
|
/* @__PURE__ */ jsxs27(Box24, { flexDirection: "row", marginBottom: 1, children: [
|
|
121763
|
-
/* @__PURE__ */
|
|
121788
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Momentum: " }),
|
|
121764
121789
|
/* @__PURE__ */ jsxs27(Text31, { color: getMomentumColor(projectSummary.momentum), children: [
|
|
121765
121790
|
getMomentumEmoji(projectSummary.momentum),
|
|
121766
121791
|
" ",
|
|
@@ -121769,8 +121794,8 @@ var WelcomeBackDialog = ({
|
|
|
121769
121794
|
] }),
|
|
121770
121795
|
projectSummary.gitStatus && /* @__PURE__ */ jsxs27(Box24, { flexDirection: "column", marginBottom: 1, children: [
|
|
121771
121796
|
/* @__PURE__ */ jsxs27(Box24, { flexDirection: "row", marginBottom: 1, children: [
|
|
121772
|
-
/* @__PURE__ */
|
|
121773
|
-
/* @__PURE__ */
|
|
121797
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Branch: " }),
|
|
121798
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.AccentBlue, children: projectSummary.gitStatus.branch }),
|
|
121774
121799
|
(projectSummary.gitStatus.ahead || projectSummary.gitStatus.behind) && /* @__PURE__ */ jsxs27(Text31, { color: Colors.Gray, children: [
|
|
121775
121800
|
" ",
|
|
121776
121801
|
"[",
|
|
@@ -121781,19 +121806,19 @@ var WelcomeBackDialog = ({
|
|
|
121781
121806
|
] })
|
|
121782
121807
|
] }),
|
|
121783
121808
|
projectSummary.gitStatus.hasChanges && /* @__PURE__ */ jsxs27(Box24, { flexDirection: "row", marginBottom: 1, children: [
|
|
121784
|
-
/* @__PURE__ */
|
|
121809
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Changes: " }),
|
|
121785
121810
|
projectSummary.gitStatus.stagedFiles > 0 && /* @__PURE__ */ jsxs27(Text31, { color: Colors.AccentGreen, children: [
|
|
121786
121811
|
projectSummary.gitStatus.stagedFiles,
|
|
121787
121812
|
" staged"
|
|
121788
121813
|
] }),
|
|
121789
|
-
projectSummary.gitStatus.stagedFiles > 0 && projectSummary.gitStatus.unstagedFiles > 0 && /* @__PURE__ */
|
|
121814
|
+
projectSummary.gitStatus.stagedFiles > 0 && projectSummary.gitStatus.unstagedFiles > 0 && /* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: ", " }),
|
|
121790
121815
|
projectSummary.gitStatus.unstagedFiles > 0 && /* @__PURE__ */ jsxs27(Text31, { color: Colors.AccentYellow, children: [
|
|
121791
121816
|
projectSummary.gitStatus.unstagedFiles,
|
|
121792
121817
|
" unstaged"
|
|
121793
121818
|
] })
|
|
121794
121819
|
] }),
|
|
121795
121820
|
projectSummary.gitStatus.lastCommitMessage && /* @__PURE__ */ jsxs27(Box24, { flexDirection: "row", marginBottom: 1, children: [
|
|
121796
|
-
/* @__PURE__ */
|
|
121821
|
+
/* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Last commit: " }),
|
|
121797
121822
|
/* @__PURE__ */ jsxs27(Text31, { color: Colors.Foreground, children: [
|
|
121798
121823
|
projectSummary.gitStatus.lastCommitHash,
|
|
121799
121824
|
' "',
|
|
@@ -121803,34 +121828,34 @@ var WelcomeBackDialog = ({
|
|
|
121803
121828
|
] })
|
|
121804
121829
|
] }),
|
|
121805
121830
|
(projectSummary.efficiency || projectSummary.recentActivity || projectSummary.tokenEfficiency) && /* @__PURE__ */ jsxs27(Box24, { flexDirection: "column", marginBottom: 1, paddingY: 1, borderStyle: "single", borderColor: Colors.Gray, children: [
|
|
121806
|
-
/* @__PURE__ */
|
|
121807
|
-
projectSummary.efficiency && /* @__PURE__ */
|
|
121831
|
+
/* @__PURE__ */ jsx30(Box24, { marginBottom: 1, children: /* @__PURE__ */ jsx30(Text31, { bold: true, color: Colors.AccentPurple, children: "Quick Status" }) }),
|
|
121832
|
+
projectSummary.efficiency && /* @__PURE__ */ jsx30(Box24, { flexDirection: "row", marginBottom: 1, children: /* @__PURE__ */ jsxs27(Text31, { color: getEfficiencyColor(projectSummary.efficiency), children: [
|
|
121808
121833
|
getEfficiencyEmoji(projectSummary.efficiency),
|
|
121809
121834
|
" ",
|
|
121810
121835
|
projectSummary.efficiency,
|
|
121811
121836
|
" efficiency"
|
|
121812
121837
|
] }) }),
|
|
121813
|
-
projectSummary.recentActivity && /* @__PURE__ */
|
|
121814
|
-
projectSummary.tokenEfficiency && /* @__PURE__ */
|
|
121838
|
+
projectSummary.recentActivity && /* @__PURE__ */ jsx30(Box24, { marginBottom: 1, children: /* @__PURE__ */ jsx30(Text31, { color: Colors.Foreground, children: projectSummary.recentActivity }) }),
|
|
121839
|
+
projectSummary.tokenEfficiency && /* @__PURE__ */ jsx30(Box24, { children: /* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: projectSummary.tokenEfficiency }) })
|
|
121815
121840
|
] }),
|
|
121816
|
-
projectSummary.nextSuggestion && /* @__PURE__ */
|
|
121841
|
+
projectSummary.nextSuggestion && /* @__PURE__ */ jsx30(Box24, { marginBottom: 1, children: /* @__PURE__ */ jsxs27(Text31, { color: Colors.AccentPurple, children: [
|
|
121817
121842
|
"\u{1F4A1} ",
|
|
121818
121843
|
projectSummary.nextSuggestion
|
|
121819
121844
|
] }) }),
|
|
121820
|
-
projectSummary.lastContent && /* @__PURE__ */
|
|
121845
|
+
projectSummary.lastContent && /* @__PURE__ */ jsx30(Box24, { marginBottom: 1, children: /* @__PURE__ */ jsxs27(Text31, { color: Colors.Gray, children: [
|
|
121821
121846
|
'Last message: "',
|
|
121822
121847
|
projectSummary.lastContent,
|
|
121823
121848
|
'"'
|
|
121824
121849
|
] }) })
|
|
121825
121850
|
] }),
|
|
121826
|
-
/* @__PURE__ */
|
|
121851
|
+
/* @__PURE__ */ jsx30(
|
|
121827
121852
|
RadioButtonSelect,
|
|
121828
121853
|
{
|
|
121829
121854
|
items,
|
|
121830
121855
|
onSelect: handleSelection
|
|
121831
121856
|
}
|
|
121832
121857
|
),
|
|
121833
|
-
/* @__PURE__ */
|
|
121858
|
+
/* @__PURE__ */ jsx30(Box24, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx30(Text31, { color: Colors.Gray, children: "Press C to continue, R to restart, Q to cancel, or use \u2191\u2193 arrows" }) })
|
|
121834
121859
|
] });
|
|
121835
121860
|
};
|
|
121836
121861
|
|
|
@@ -121838,7 +121863,7 @@ var WelcomeBackDialog = ({
|
|
|
121838
121863
|
import { useState as useState38, useEffect as useEffect36 } from "react";
|
|
121839
121864
|
import { Box as Box25, Text as Text32, useInput as useInput7 } from "ink";
|
|
121840
121865
|
init_database();
|
|
121841
|
-
import { jsx as
|
|
121866
|
+
import { jsx as jsx31, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
121842
121867
|
function SearchEngineConfigDialog({
|
|
121843
121868
|
onSubmit,
|
|
121844
121869
|
onCancel
|
|
@@ -121996,7 +122021,7 @@ function SearchEngineConfigDialog({
|
|
|
121996
122021
|
}
|
|
121997
122022
|
});
|
|
121998
122023
|
if (isLoading) {
|
|
121999
|
-
return /* @__PURE__ */
|
|
122024
|
+
return /* @__PURE__ */ jsx31(
|
|
122000
122025
|
Box25,
|
|
122001
122026
|
{
|
|
122002
122027
|
borderStyle: "round",
|
|
@@ -122004,7 +122029,7 @@ function SearchEngineConfigDialog({
|
|
|
122004
122029
|
flexDirection: "column",
|
|
122005
122030
|
padding: 1,
|
|
122006
122031
|
width: "100%",
|
|
122007
|
-
children: /* @__PURE__ */
|
|
122032
|
+
children: /* @__PURE__ */ jsx31(Text32, { children: "Loading search engine configuration..." })
|
|
122008
122033
|
}
|
|
122009
122034
|
);
|
|
122010
122035
|
}
|
|
@@ -122018,8 +122043,8 @@ function SearchEngineConfigDialog({
|
|
|
122018
122043
|
padding: 1,
|
|
122019
122044
|
width: "100%",
|
|
122020
122045
|
children: [
|
|
122021
|
-
/* @__PURE__ */
|
|
122022
|
-
/* @__PURE__ */
|
|
122046
|
+
/* @__PURE__ */ jsx31(Text32, { bold: true, color: Colors.AccentGreen, children: "\u{1F4BE} Saving API keys to database..." }),
|
|
122047
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx31(Text32, { color: Colors.Gray, children: "Please wait while your search engine configuration is saved." }) })
|
|
122023
122048
|
]
|
|
122024
122049
|
}
|
|
122025
122050
|
);
|
|
@@ -122033,59 +122058,59 @@ function SearchEngineConfigDialog({
|
|
|
122033
122058
|
padding: 1,
|
|
122034
122059
|
width: "100%",
|
|
122035
122060
|
children: [
|
|
122036
|
-
/* @__PURE__ */
|
|
122037
|
-
/* @__PURE__ */
|
|
122038
|
-
/* @__PURE__ */
|
|
122039
|
-
/* @__PURE__ */
|
|
122061
|
+
/* @__PURE__ */ jsx31(Text32, { bold: true, color: Colors.AccentPurple, children: "Search Engine Configuration" }),
|
|
122062
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx31(Text32, { children: "Configure search engine APIs for web research. You need at least one API key." }) }),
|
|
122063
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx31(Text32, { bold: true, color: Colors.AccentBlue, children: "Brave Search (General Web Search)" }) }),
|
|
122064
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsxs28(Text32, { color: Colors.Gray, children: [
|
|
122040
122065
|
"Get API key: ",
|
|
122041
|
-
/* @__PURE__ */
|
|
122066
|
+
/* @__PURE__ */ jsx31(Text32, { color: Colors.AccentBlue, children: "https://api.search.brave.com/" })
|
|
122042
122067
|
] }) }),
|
|
122043
122068
|
/* @__PURE__ */ jsxs28(Box25, { marginTop: 1, flexDirection: "row", children: [
|
|
122044
|
-
/* @__PURE__ */
|
|
122069
|
+
/* @__PURE__ */ jsx31(Box25, { width: 14, children: /* @__PURE__ */ jsx31(
|
|
122045
122070
|
Text32,
|
|
122046
122071
|
{
|
|
122047
122072
|
color: currentField === "braveApiKey" ? Colors.AccentPurple : Colors.Gray,
|
|
122048
122073
|
children: "Brave API Key:"
|
|
122049
122074
|
}
|
|
122050
122075
|
) }),
|
|
122051
|
-
/* @__PURE__ */
|
|
122076
|
+
/* @__PURE__ */ jsx31(Box25, { flexGrow: 1, children: /* @__PURE__ */ jsxs28(Text32, { children: [
|
|
122052
122077
|
currentField === "braveApiKey" ? "> " : " ",
|
|
122053
122078
|
braveApiKey ? "\u2022".repeat(Math.min(braveApiKey.length, 20)) + (braveApiKey.length > 20 ? "..." : "") : "optional"
|
|
122054
122079
|
] }) })
|
|
122055
122080
|
] }),
|
|
122056
|
-
/* @__PURE__ */
|
|
122057
|
-
/* @__PURE__ */
|
|
122081
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx31(Text32, { bold: true, color: Colors.AccentBlue, children: "Tavily Search (Research Focus)" }) }),
|
|
122082
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsxs28(Text32, { color: Colors.Gray, children: [
|
|
122058
122083
|
"Get API key: ",
|
|
122059
|
-
/* @__PURE__ */
|
|
122084
|
+
/* @__PURE__ */ jsx31(Text32, { color: Colors.AccentBlue, children: "https://tavily.com/" })
|
|
122060
122085
|
] }) }),
|
|
122061
122086
|
/* @__PURE__ */ jsxs28(Box25, { marginTop: 1, flexDirection: "row", children: [
|
|
122062
|
-
/* @__PURE__ */
|
|
122087
|
+
/* @__PURE__ */ jsx31(Box25, { width: 14, children: /* @__PURE__ */ jsx31(
|
|
122063
122088
|
Text32,
|
|
122064
122089
|
{
|
|
122065
122090
|
color: currentField === "tavilyApiKey" ? Colors.AccentPurple : Colors.Gray,
|
|
122066
122091
|
children: "Tavily API Key:"
|
|
122067
122092
|
}
|
|
122068
122093
|
) }),
|
|
122069
|
-
/* @__PURE__ */
|
|
122094
|
+
/* @__PURE__ */ jsx31(Box25, { flexGrow: 1, children: /* @__PURE__ */ jsxs28(Text32, { children: [
|
|
122070
122095
|
currentField === "tavilyApiKey" ? "> " : " ",
|
|
122071
122096
|
tavilyApiKey ? "\u2022".repeat(Math.min(tavilyApiKey.length, 20)) + (tavilyApiKey.length > 20 ? "..." : "") : "optional"
|
|
122072
122097
|
] }) })
|
|
122073
122098
|
] }),
|
|
122074
122099
|
/* @__PURE__ */ jsxs28(Box25, { marginTop: 1, flexDirection: "row", children: [
|
|
122075
|
-
/* @__PURE__ */
|
|
122100
|
+
/* @__PURE__ */ jsx31(Box25, { width: 14, children: /* @__PURE__ */ jsx31(
|
|
122076
122101
|
Text32,
|
|
122077
122102
|
{
|
|
122078
122103
|
color: currentField === "submit" ? Colors.AccentGreen : Colors.Gray,
|
|
122079
122104
|
children: "Ready:"
|
|
122080
122105
|
}
|
|
122081
122106
|
) }),
|
|
122082
|
-
/* @__PURE__ */
|
|
122107
|
+
/* @__PURE__ */ jsx31(Box25, { flexGrow: 1, children: /* @__PURE__ */ jsxs28(Text32, { color: currentField === "submit" ? Colors.AccentGreen : Colors.Gray, children: [
|
|
122083
122108
|
currentField === "submit" ? "> " : " ",
|
|
122084
122109
|
"Save & Continue"
|
|
122085
122110
|
] }) })
|
|
122086
122111
|
] }),
|
|
122087
|
-
/* @__PURE__ */
|
|
122088
|
-
!braveApiKey && !tavilyApiKey && /* @__PURE__ */
|
|
122112
|
+
/* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx31(Text32, { color: Colors.Gray, children: "Press Enter to continue, Tab/\u2191\u2193 to navigate, Esc to cancel" }) }),
|
|
122113
|
+
!braveApiKey && !tavilyApiKey && /* @__PURE__ */ jsx31(Box25, { marginTop: 1, children: /* @__PURE__ */ jsx31(Text32, { color: Colors.AccentYellow, children: "\u26A0\uFE0F At least one API key is required for search functionality" }) })
|
|
122089
122114
|
]
|
|
122090
122115
|
}
|
|
122091
122116
|
);
|
|
@@ -122095,7 +122120,7 @@ function SearchEngineConfigDialog({
|
|
|
122095
122120
|
import { useState as useState39, useEffect as useEffect37 } from "react";
|
|
122096
122121
|
import { Box as Box26, Text as Text33 } from "ink";
|
|
122097
122122
|
import Spinner2 from "ink-spinner";
|
|
122098
|
-
import { jsx as
|
|
122123
|
+
import { jsx as jsx32, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
122099
122124
|
function AuthInProgress({
|
|
122100
122125
|
onTimeout
|
|
122101
122126
|
}) {
|
|
@@ -122115,7 +122140,7 @@ function AuthInProgress({
|
|
|
122115
122140
|
}, 18e4);
|
|
122116
122141
|
return () => clearTimeout(timer);
|
|
122117
122142
|
}, [onTimeout]);
|
|
122118
|
-
return /* @__PURE__ */
|
|
122143
|
+
return /* @__PURE__ */ jsx32(
|
|
122119
122144
|
Box26,
|
|
122120
122145
|
{
|
|
122121
122146
|
borderStyle: "round",
|
|
@@ -122123,8 +122148,8 @@ function AuthInProgress({
|
|
|
122123
122148
|
flexDirection: "column",
|
|
122124
122149
|
padding: 1,
|
|
122125
122150
|
width: "100%",
|
|
122126
|
-
children: timedOut ? /* @__PURE__ */
|
|
122127
|
-
/* @__PURE__ */
|
|
122151
|
+
children: timedOut ? /* @__PURE__ */ jsx32(Text33, { color: Colors.AccentRed, children: "Authentication timed out. Please try again." }) : /* @__PURE__ */ jsx32(Box26, { children: /* @__PURE__ */ jsxs29(Text33, { children: [
|
|
122152
|
+
/* @__PURE__ */ jsx32(Spinner2, { type: "dots" }),
|
|
122128
122153
|
" Waiting for auth... (Press ESC or CTRL+C to cancel)"
|
|
122129
122154
|
] }) })
|
|
122130
122155
|
}
|
|
@@ -122181,7 +122206,7 @@ var editorSettingsManager = new EditorSettingsManager();
|
|
|
122181
122206
|
// packages/cli/src/ui/components/EditorSettingsDialog.tsx
|
|
122182
122207
|
init_settings();
|
|
122183
122208
|
init_dist2();
|
|
122184
|
-
import { jsx as
|
|
122209
|
+
import { jsx as jsx33, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
122185
122210
|
function EditorSettingsDialog({
|
|
122186
122211
|
onSelect,
|
|
122187
122212
|
settings,
|
|
@@ -122251,9 +122276,9 @@ function EditorSettingsDialog({
|
|
|
122251
122276
|
focusedSection === "editor" ? "> " : " ",
|
|
122252
122277
|
"Select Editor",
|
|
122253
122278
|
" ",
|
|
122254
|
-
/* @__PURE__ */
|
|
122279
|
+
/* @__PURE__ */ jsx33(Text34, { color: Colors.Gray, children: otherScopeModifiedMessage })
|
|
122255
122280
|
] }),
|
|
122256
|
-
/* @__PURE__ */
|
|
122281
|
+
/* @__PURE__ */ jsx33(
|
|
122257
122282
|
RadioButtonSelect,
|
|
122258
122283
|
{
|
|
122259
122284
|
items: editorItems.map((item) => ({
|
|
@@ -122272,7 +122297,7 @@ function EditorSettingsDialog({
|
|
|
122272
122297
|
focusedSection === "scope" ? "> " : " ",
|
|
122273
122298
|
"Apply To"
|
|
122274
122299
|
] }),
|
|
122275
|
-
/* @__PURE__ */
|
|
122300
|
+
/* @__PURE__ */ jsx33(
|
|
122276
122301
|
RadioButtonSelect,
|
|
122277
122302
|
{
|
|
122278
122303
|
items: scopeItems,
|
|
@@ -122282,16 +122307,16 @@ function EditorSettingsDialog({
|
|
|
122282
122307
|
}
|
|
122283
122308
|
)
|
|
122284
122309
|
] }),
|
|
122285
|
-
/* @__PURE__ */
|
|
122310
|
+
/* @__PURE__ */ jsx33(Box27, { marginTop: 1, children: /* @__PURE__ */ jsx33(Text34, { color: Colors.Gray, children: "(Use Enter to select, Tab to change focus)" }) })
|
|
122286
122311
|
] }),
|
|
122287
122312
|
/* @__PURE__ */ jsxs30(Box27, { flexDirection: "column", width: "55%", paddingLeft: 2, children: [
|
|
122288
|
-
/* @__PURE__ */
|
|
122313
|
+
/* @__PURE__ */ jsx33(Text34, { bold: true, children: "Editor Preference" }),
|
|
122289
122314
|
/* @__PURE__ */ jsxs30(Box27, { flexDirection: "column", gap: 1, marginTop: 1, children: [
|
|
122290
|
-
/* @__PURE__ */
|
|
122315
|
+
/* @__PURE__ */ jsx33(Text34, { color: Colors.Gray, children: "These editors are currently supported. Please note that some editors cannot be used in sandbox mode." }),
|
|
122291
122316
|
/* @__PURE__ */ jsxs30(Text34, { color: Colors.Gray, children: [
|
|
122292
122317
|
"Your preferred editor is:",
|
|
122293
122318
|
" ",
|
|
122294
|
-
/* @__PURE__ */
|
|
122319
|
+
/* @__PURE__ */ jsx33(
|
|
122295
122320
|
Text34,
|
|
122296
122321
|
{
|
|
122297
122322
|
color: mergedEditorName === "None" ? Colors.AccentRed : Colors.AccentCyan,
|
|
@@ -122315,7 +122340,7 @@ import { Box as Box28, Text as Text36 } from "ink";
|
|
|
122315
122340
|
// packages/cli/src/ui/utils/InlineMarkdownRenderer.tsx
|
|
122316
122341
|
import React24 from "react";
|
|
122317
122342
|
import { Text as Text35 } from "ink";
|
|
122318
|
-
import { Fragment as Fragment6, jsx as
|
|
122343
|
+
import { Fragment as Fragment6, jsx as jsx34, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
122319
122344
|
var BOLD_MARKER_LENGTH = 2;
|
|
122320
122345
|
var ITALIC_MARKER_LENGTH = 1;
|
|
122321
122346
|
var STRIKETHROUGH_MARKER_LENGTH = 2;
|
|
@@ -122324,7 +122349,7 @@ var UNDERLINE_TAG_START_LENGTH = 3;
|
|
|
122324
122349
|
var UNDERLINE_TAG_END_LENGTH = 4;
|
|
122325
122350
|
var RenderInlineInternal = ({ text }) => {
|
|
122326
122351
|
if (!/[*_~`<[https?:]/.test(text)) {
|
|
122327
|
-
return /* @__PURE__ */
|
|
122352
|
+
return /* @__PURE__ */ jsx34(Text35, { children: text });
|
|
122328
122353
|
}
|
|
122329
122354
|
const nodes = [];
|
|
122330
122355
|
let lastIndex = 0;
|
|
@@ -122333,7 +122358,7 @@ var RenderInlineInternal = ({ text }) => {
|
|
|
122333
122358
|
while ((match2 = inlineRegex.exec(text)) !== null) {
|
|
122334
122359
|
if (match2.index > lastIndex) {
|
|
122335
122360
|
nodes.push(
|
|
122336
|
-
/* @__PURE__ */
|
|
122361
|
+
/* @__PURE__ */ jsx34(Text35, { children: text.slice(lastIndex, match2.index) }, `t-${lastIndex}`)
|
|
122337
122362
|
);
|
|
122338
122363
|
}
|
|
122339
122364
|
const fullMatch = match2[0];
|
|
@@ -122341,22 +122366,22 @@ var RenderInlineInternal = ({ text }) => {
|
|
|
122341
122366
|
const key = `m-${match2.index}`;
|
|
122342
122367
|
try {
|
|
122343
122368
|
if (fullMatch.startsWith("**") && fullMatch.endsWith("**") && fullMatch.length > BOLD_MARKER_LENGTH * 2) {
|
|
122344
|
-
renderedNode = /* @__PURE__ */
|
|
122369
|
+
renderedNode = /* @__PURE__ */ jsx34(Text35, { bold: true, children: fullMatch.slice(BOLD_MARKER_LENGTH, -BOLD_MARKER_LENGTH) }, key);
|
|
122345
122370
|
} else if (fullMatch.length > ITALIC_MARKER_LENGTH * 2 && (fullMatch.startsWith("*") && fullMatch.endsWith("*") || fullMatch.startsWith("_") && fullMatch.endsWith("_")) && !/\w/.test(text.substring(match2.index - 1, match2.index)) && !/\w/.test(
|
|
122346
122371
|
text.substring(inlineRegex.lastIndex, inlineRegex.lastIndex + 1)
|
|
122347
122372
|
) && !/\S[./\\]/.test(text.substring(match2.index - 2, match2.index)) && !/[./\\]\S/.test(
|
|
122348
122373
|
text.substring(inlineRegex.lastIndex, inlineRegex.lastIndex + 2)
|
|
122349
122374
|
)) {
|
|
122350
|
-
renderedNode = /* @__PURE__ */
|
|
122375
|
+
renderedNode = /* @__PURE__ */ jsx34(Text35, { italic: true, children: fullMatch.slice(ITALIC_MARKER_LENGTH, -ITALIC_MARKER_LENGTH) }, key);
|
|
122351
122376
|
} else if (fullMatch.startsWith("~~") && fullMatch.endsWith("~~") && fullMatch.length > STRIKETHROUGH_MARKER_LENGTH * 2) {
|
|
122352
|
-
renderedNode = /* @__PURE__ */
|
|
122377
|
+
renderedNode = /* @__PURE__ */ jsx34(Text35, { strikethrough: true, children: fullMatch.slice(
|
|
122353
122378
|
STRIKETHROUGH_MARKER_LENGTH,
|
|
122354
122379
|
-STRIKETHROUGH_MARKER_LENGTH
|
|
122355
122380
|
) }, key);
|
|
122356
122381
|
} else if (fullMatch.startsWith("`") && fullMatch.endsWith("`") && fullMatch.length > INLINE_CODE_MARKER_LENGTH) {
|
|
122357
122382
|
const codeMatch = fullMatch.match(/^(`+)(.+?)\1$/s);
|
|
122358
122383
|
if (codeMatch && codeMatch[2]) {
|
|
122359
|
-
renderedNode = /* @__PURE__ */
|
|
122384
|
+
renderedNode = /* @__PURE__ */ jsx34(Text35, { color: Colors.AccentPurple, children: codeMatch[2] }, key);
|
|
122360
122385
|
}
|
|
122361
122386
|
} else if (fullMatch.startsWith("[") && fullMatch.includes("](") && fullMatch.endsWith(")")) {
|
|
122362
122387
|
const linkMatch = fullMatch.match(/\[(.*?)\]\((.*?)\)/);
|
|
@@ -122373,24 +122398,24 @@ var RenderInlineInternal = ({ text }) => {
|
|
|
122373
122398
|
] }, key);
|
|
122374
122399
|
}
|
|
122375
122400
|
} else if (fullMatch.startsWith("<u>") && fullMatch.endsWith("</u>") && fullMatch.length > UNDERLINE_TAG_START_LENGTH + UNDERLINE_TAG_END_LENGTH - 1) {
|
|
122376
|
-
renderedNode = /* @__PURE__ */
|
|
122401
|
+
renderedNode = /* @__PURE__ */ jsx34(Text35, { underline: true, children: fullMatch.slice(
|
|
122377
122402
|
UNDERLINE_TAG_START_LENGTH,
|
|
122378
122403
|
-UNDERLINE_TAG_END_LENGTH
|
|
122379
122404
|
) }, key);
|
|
122380
122405
|
} else if (fullMatch.match(/^https?:\/\//)) {
|
|
122381
|
-
renderedNode = /* @__PURE__ */
|
|
122406
|
+
renderedNode = /* @__PURE__ */ jsx34(Text35, { color: Colors.AccentBlue, children: fullMatch }, key);
|
|
122382
122407
|
}
|
|
122383
122408
|
} catch (e2) {
|
|
122384
122409
|
console.error("Error parsing inline markdown part:", fullMatch, e2);
|
|
122385
122410
|
renderedNode = null;
|
|
122386
122411
|
}
|
|
122387
|
-
nodes.push(renderedNode ?? /* @__PURE__ */
|
|
122412
|
+
nodes.push(renderedNode ?? /* @__PURE__ */ jsx34(Text35, { children: fullMatch }, key));
|
|
122388
122413
|
lastIndex = inlineRegex.lastIndex;
|
|
122389
122414
|
}
|
|
122390
122415
|
if (lastIndex < text.length) {
|
|
122391
|
-
nodes.push(/* @__PURE__ */
|
|
122416
|
+
nodes.push(/* @__PURE__ */ jsx34(Text35, { children: text.slice(lastIndex) }, `t-${lastIndex}`));
|
|
122392
122417
|
}
|
|
122393
|
-
return /* @__PURE__ */
|
|
122418
|
+
return /* @__PURE__ */ jsx34(Fragment6, { children: nodes.filter((node) => node !== null) });
|
|
122394
122419
|
};
|
|
122395
122420
|
var RenderInline = React24.memo(RenderInlineInternal);
|
|
122396
122421
|
var getPlainTextLength = (text) => {
|
|
@@ -122399,7 +122424,7 @@ var getPlainTextLength = (text) => {
|
|
|
122399
122424
|
};
|
|
122400
122425
|
|
|
122401
122426
|
// packages/cli/src/ui/components/ShellConfirmationDialog.tsx
|
|
122402
|
-
import { jsx as
|
|
122427
|
+
import { jsx as jsx35, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
122403
122428
|
var ShellConfirmationDialog = ({ request: request2 }) => {
|
|
122404
122429
|
const { commands, onConfirm } = request2;
|
|
122405
122430
|
useKeypress(
|
|
@@ -122442,9 +122467,9 @@ var ShellConfirmationDialog = ({ request: request2 }) => {
|
|
|
122442
122467
|
marginLeft: 1,
|
|
122443
122468
|
children: [
|
|
122444
122469
|
/* @__PURE__ */ jsxs32(Box28, { flexDirection: "column", marginBottom: 1, children: [
|
|
122445
|
-
/* @__PURE__ */
|
|
122446
|
-
/* @__PURE__ */
|
|
122447
|
-
/* @__PURE__ */
|
|
122470
|
+
/* @__PURE__ */ jsx35(Text36, { bold: true, children: "Shell Command Execution" }),
|
|
122471
|
+
/* @__PURE__ */ jsx35(Text36, { children: "A custom command wants to run the following shell commands:" }),
|
|
122472
|
+
/* @__PURE__ */ jsx35(
|
|
122448
122473
|
Box28,
|
|
122449
122474
|
{
|
|
122450
122475
|
flexDirection: "column",
|
|
@@ -122452,12 +122477,12 @@ var ShellConfirmationDialog = ({ request: request2 }) => {
|
|
|
122452
122477
|
borderColor: Colors.Gray,
|
|
122453
122478
|
paddingX: 1,
|
|
122454
122479
|
marginTop: 1,
|
|
122455
|
-
children: commands.map((cmd) => /* @__PURE__ */
|
|
122480
|
+
children: commands.map((cmd) => /* @__PURE__ */ jsx35(Text36, { color: Colors.AccentCyan, children: /* @__PURE__ */ jsx35(RenderInline, { text: cmd }) }, cmd))
|
|
122456
122481
|
}
|
|
122457
122482
|
)
|
|
122458
122483
|
] }),
|
|
122459
|
-
/* @__PURE__ */
|
|
122460
|
-
/* @__PURE__ */
|
|
122484
|
+
/* @__PURE__ */ jsx35(Box28, { marginBottom: 1, children: /* @__PURE__ */ jsx35(Text36, { children: "Do you want to proceed?" }) }),
|
|
122485
|
+
/* @__PURE__ */ jsx35(RadioButtonSelect, { items: options2, onSelect: handleSelect, isFocused: true })
|
|
122461
122486
|
]
|
|
122462
122487
|
}
|
|
122463
122488
|
);
|
|
@@ -123510,24 +123535,24 @@ init_database();
|
|
|
123510
123535
|
|
|
123511
123536
|
// packages/cli/src/ui/components/Tips.tsx
|
|
123512
123537
|
import { Box as Box29, Text as Text37 } from "ink";
|
|
123513
|
-
import { jsx as
|
|
123538
|
+
import { jsx as jsx36, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
123514
123539
|
var Tips = ({ config }) => {
|
|
123515
123540
|
const geminiMdFileCount = config.getGeminiMdFileCount();
|
|
123516
123541
|
return /* @__PURE__ */ jsxs33(Box29, { flexDirection: "column", children: [
|
|
123517
|
-
/* @__PURE__ */
|
|
123518
|
-
/* @__PURE__ */
|
|
123519
|
-
/* @__PURE__ */
|
|
123542
|
+
/* @__PURE__ */ jsx36(Text37, { color: Colors.Foreground, children: "Tips for getting started:" }),
|
|
123543
|
+
/* @__PURE__ */ jsx36(Text37, { color: Colors.Foreground, children: "1. Ask questions, edit files, or run commands." }),
|
|
123544
|
+
/* @__PURE__ */ jsx36(Text37, { color: Colors.Foreground, children: "2. Be specific for the best results." }),
|
|
123520
123545
|
geminiMdFileCount === 0 && /* @__PURE__ */ jsxs33(Text37, { color: Colors.Foreground, children: [
|
|
123521
123546
|
"3. Create",
|
|
123522
123547
|
" ",
|
|
123523
|
-
/* @__PURE__ */
|
|
123548
|
+
/* @__PURE__ */ jsx36(Text37, { bold: true, color: Colors.AccentPurple, children: "LINK.md" }),
|
|
123524
123549
|
" ",
|
|
123525
123550
|
"files to customize your interactions with FSS Link."
|
|
123526
123551
|
] }),
|
|
123527
123552
|
/* @__PURE__ */ jsxs33(Text37, { color: Colors.Foreground, children: [
|
|
123528
123553
|
geminiMdFileCount === 0 ? "4." : "3.",
|
|
123529
123554
|
" ",
|
|
123530
|
-
/* @__PURE__ */
|
|
123555
|
+
/* @__PURE__ */ jsx36(Text37, { bold: true, color: Colors.AccentPurple, children: "/help" }),
|
|
123531
123556
|
" ",
|
|
123532
123557
|
"for more information."
|
|
123533
123558
|
] })
|
|
@@ -123583,7 +123608,7 @@ var ConsolePatcher = class {
|
|
|
123583
123608
|
|
|
123584
123609
|
// packages/cli/src/ui/components/DetailedMessagesDisplay.tsx
|
|
123585
123610
|
import { Box as Box30, Text as Text38 } from "ink";
|
|
123586
|
-
import { jsx as
|
|
123611
|
+
import { jsx as jsx37, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
123587
123612
|
var DetailedMessagesDisplay = ({ messages, maxHeight, width }) => {
|
|
123588
123613
|
if (messages.length === 0) {
|
|
123589
123614
|
return null;
|
|
@@ -123599,11 +123624,11 @@ var DetailedMessagesDisplay = ({ messages, maxHeight, width }) => {
|
|
|
123599
123624
|
paddingX: 1,
|
|
123600
123625
|
width,
|
|
123601
123626
|
children: [
|
|
123602
|
-
/* @__PURE__ */
|
|
123627
|
+
/* @__PURE__ */ jsx37(Box30, { marginBottom: 1, children: /* @__PURE__ */ jsxs34(Text38, { bold: true, color: Colors.Foreground, children: [
|
|
123603
123628
|
"Debug Console ",
|
|
123604
|
-
/* @__PURE__ */
|
|
123629
|
+
/* @__PURE__ */ jsx37(Text38, { color: Colors.Gray, children: "(ctrl+o to close)" })
|
|
123605
123630
|
] }) }),
|
|
123606
|
-
/* @__PURE__ */
|
|
123631
|
+
/* @__PURE__ */ jsx37(MaxSizedBox, { maxHeight, maxWidth: width - borderAndPadding, children: messages.map((msg, index) => {
|
|
123607
123632
|
let textColor = Colors.Foreground;
|
|
123608
123633
|
let icon = "\u2139";
|
|
123609
123634
|
switch (msg.type) {
|
|
@@ -123645,7 +123670,7 @@ var DetailedMessagesDisplay = ({ messages, maxHeight, width }) => {
|
|
|
123645
123670
|
|
|
123646
123671
|
// packages/cli/src/ui/components/messages/UserMessage.tsx
|
|
123647
123672
|
import { Text as Text39, Box as Box31 } from "ink";
|
|
123648
|
-
import { jsx as
|
|
123673
|
+
import { jsx as jsx38, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
123649
123674
|
var UserMessage = ({ text }) => {
|
|
123650
123675
|
const prefix = "> ";
|
|
123651
123676
|
const prefixWidth = prefix.length;
|
|
@@ -123663,8 +123688,8 @@ var UserMessage = ({ text }) => {
|
|
|
123663
123688
|
marginY: 1,
|
|
123664
123689
|
alignSelf: "flex-start",
|
|
123665
123690
|
children: [
|
|
123666
|
-
/* @__PURE__ */
|
|
123667
|
-
/* @__PURE__ */
|
|
123691
|
+
/* @__PURE__ */ jsx38(Box31, { width: prefixWidth, children: /* @__PURE__ */ jsx38(Text39, { color: textColor, children: prefix }) }),
|
|
123692
|
+
/* @__PURE__ */ jsx38(Box31, { flexGrow: 1, children: /* @__PURE__ */ jsx38(Text39, { wrap: "wrap", color: textColor, children: text }) })
|
|
123668
123693
|
]
|
|
123669
123694
|
}
|
|
123670
123695
|
);
|
|
@@ -123672,12 +123697,12 @@ var UserMessage = ({ text }) => {
|
|
|
123672
123697
|
|
|
123673
123698
|
// packages/cli/src/ui/components/messages/UserShellMessage.tsx
|
|
123674
123699
|
import { Box as Box32, Text as Text40 } from "ink";
|
|
123675
|
-
import { jsx as
|
|
123700
|
+
import { jsx as jsx39, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
123676
123701
|
var UserShellMessage = ({ text }) => {
|
|
123677
123702
|
const commandToDisplay = text.startsWith("!") ? text.substring(1) : text;
|
|
123678
123703
|
return /* @__PURE__ */ jsxs36(Box32, { children: [
|
|
123679
|
-
/* @__PURE__ */
|
|
123680
|
-
/* @__PURE__ */
|
|
123704
|
+
/* @__PURE__ */ jsx39(Text40, { color: Colors.AccentCyan, children: "$ " }),
|
|
123705
|
+
/* @__PURE__ */ jsx39(Text40, { children: commandToDisplay })
|
|
123681
123706
|
] });
|
|
123682
123707
|
};
|
|
123683
123708
|
|
|
@@ -123691,7 +123716,7 @@ import { Text as Text42, Box as Box34 } from "ink";
|
|
|
123691
123716
|
// packages/cli/src/ui/utils/TableRenderer.tsx
|
|
123692
123717
|
import React25 from "react";
|
|
123693
123718
|
import { Text as Text41, Box as Box33 } from "ink";
|
|
123694
|
-
import { jsx as
|
|
123719
|
+
import { jsx as jsx40, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
123695
123720
|
var TableRenderer = ({
|
|
123696
123721
|
headers,
|
|
123697
123722
|
rows,
|
|
@@ -123740,7 +123765,7 @@ var TableRenderer = ({
|
|
|
123740
123765
|
const actualDisplayWidth = getPlainTextLength(cellContent);
|
|
123741
123766
|
const paddingNeeded = Math.max(0, contentWidth - actualDisplayWidth);
|
|
123742
123767
|
return /* @__PURE__ */ jsxs37(Text41, { children: [
|
|
123743
|
-
isHeader ? /* @__PURE__ */
|
|
123768
|
+
isHeader ? /* @__PURE__ */ jsx40(Text41, { bold: true, color: Colors.AccentCyan, children: /* @__PURE__ */ jsx40(RenderInline, { text: cellContent }) }) : /* @__PURE__ */ jsx40(RenderInline, { text: cellContent }),
|
|
123744
123769
|
" ".repeat(paddingNeeded)
|
|
123745
123770
|
] });
|
|
123746
123771
|
};
|
|
@@ -123753,7 +123778,7 @@ var TableRenderer = ({
|
|
|
123753
123778
|
const char = chars[type2];
|
|
123754
123779
|
const borderParts = adjustedWidths.map((w) => char.horizontal.repeat(w));
|
|
123755
123780
|
const border = char.left + borderParts.join(char.middle) + char.right;
|
|
123756
|
-
return /* @__PURE__ */
|
|
123781
|
+
return /* @__PURE__ */ jsx40(Text41, { children: border });
|
|
123757
123782
|
};
|
|
123758
123783
|
const renderRow = (cells, isHeader = false) => {
|
|
123759
123784
|
const renderedCells = cells.map((cell, index) => {
|
|
@@ -123775,7 +123800,7 @@ var TableRenderer = ({
|
|
|
123775
123800
|
renderBorder("top"),
|
|
123776
123801
|
renderRow(headers, true),
|
|
123777
123802
|
renderBorder("middle"),
|
|
123778
|
-
rows.map((row, index) => /* @__PURE__ */
|
|
123803
|
+
rows.map((row, index) => /* @__PURE__ */ jsx40(React25.Fragment, { children: renderRow(row) }, index)),
|
|
123779
123804
|
renderBorder("bottom")
|
|
123780
123805
|
] });
|
|
123781
123806
|
};
|
|
@@ -123794,7 +123819,7 @@ var useSettings = () => {
|
|
|
123794
123819
|
};
|
|
123795
123820
|
|
|
123796
123821
|
// packages/cli/src/ui/utils/MarkdownDisplay.tsx
|
|
123797
|
-
import { Fragment as Fragment7, jsx as
|
|
123822
|
+
import { Fragment as Fragment7, jsx as jsx41, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
123798
123823
|
var EMPTY_LINE_HEIGHT = 1;
|
|
123799
123824
|
var CODE_BLOCK_PREFIX_PADDING = 1;
|
|
123800
123825
|
var LIST_ITEM_PREFIX_PADDING = 1;
|
|
@@ -123805,7 +123830,7 @@ var MarkdownDisplayInternal = ({
|
|
|
123805
123830
|
availableTerminalHeight,
|
|
123806
123831
|
terminalWidth
|
|
123807
123832
|
}) => {
|
|
123808
|
-
if (!text) return /* @__PURE__ */
|
|
123833
|
+
if (!text) return /* @__PURE__ */ jsx41(Fragment7, {});
|
|
123809
123834
|
const lines = text.split("\n");
|
|
123810
123835
|
const headerRegex = /^ *(#{1,4}) +(.*)/;
|
|
123811
123836
|
const codeFenceRegex = /^ *(`{3,}|~{3,}) *(\w*?) *$/;
|
|
@@ -123835,7 +123860,7 @@ var MarkdownDisplayInternal = ({
|
|
|
123835
123860
|
const fenceMatch = line.match(codeFenceRegex);
|
|
123836
123861
|
if (fenceMatch && fenceMatch[1].startsWith(codeBlockFence[0]) && fenceMatch[1].length >= codeBlockFence.length) {
|
|
123837
123862
|
addContentBlock(
|
|
123838
|
-
/* @__PURE__ */
|
|
123863
|
+
/* @__PURE__ */ jsx41(
|
|
123839
123864
|
RenderCodeBlock,
|
|
123840
123865
|
{
|
|
123841
123866
|
content: codeBlockContent,
|
|
@@ -123874,7 +123899,7 @@ var MarkdownDisplayInternal = ({
|
|
|
123874
123899
|
tableRows = [];
|
|
123875
123900
|
} else {
|
|
123876
123901
|
addContentBlock(
|
|
123877
|
-
/* @__PURE__ */
|
|
123902
|
+
/* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text42, { wrap: "wrap", children: /* @__PURE__ */ jsx41(RenderInline, { text: line }) }) }, key)
|
|
123878
123903
|
);
|
|
123879
123904
|
}
|
|
123880
123905
|
} else if (inTable && tableSeparatorMatch) {
|
|
@@ -123890,7 +123915,7 @@ var MarkdownDisplayInternal = ({
|
|
|
123890
123915
|
} else if (inTable && !tableRowMatch) {
|
|
123891
123916
|
if (tableHeaders.length > 0 && tableRows.length > 0) {
|
|
123892
123917
|
addContentBlock(
|
|
123893
|
-
/* @__PURE__ */
|
|
123918
|
+
/* @__PURE__ */ jsx41(
|
|
123894
123919
|
RenderTable,
|
|
123895
123920
|
{
|
|
123896
123921
|
headers: tableHeaders,
|
|
@@ -123906,12 +123931,12 @@ var MarkdownDisplayInternal = ({
|
|
|
123906
123931
|
tableHeaders = [];
|
|
123907
123932
|
if (line.trim().length > 0) {
|
|
123908
123933
|
addContentBlock(
|
|
123909
|
-
/* @__PURE__ */
|
|
123934
|
+
/* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text42, { wrap: "wrap", children: /* @__PURE__ */ jsx41(RenderInline, { text: line }) }) }, key)
|
|
123910
123935
|
);
|
|
123911
123936
|
}
|
|
123912
123937
|
} else if (hrMatch) {
|
|
123913
123938
|
addContentBlock(
|
|
123914
|
-
/* @__PURE__ */
|
|
123939
|
+
/* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text42, { dimColor: true, children: "---" }) }, key)
|
|
123915
123940
|
);
|
|
123916
123941
|
} else if (headerMatch) {
|
|
123917
123942
|
const level = headerMatch[1].length;
|
|
@@ -123919,28 +123944,28 @@ var MarkdownDisplayInternal = ({
|
|
|
123919
123944
|
let headerNode = null;
|
|
123920
123945
|
switch (level) {
|
|
123921
123946
|
case 1:
|
|
123922
|
-
headerNode = /* @__PURE__ */
|
|
123947
|
+
headerNode = /* @__PURE__ */ jsx41(Text42, { bold: true, color: Colors.AccentCyan, children: /* @__PURE__ */ jsx41(RenderInline, { text: headerText }) });
|
|
123923
123948
|
break;
|
|
123924
123949
|
case 2:
|
|
123925
|
-
headerNode = /* @__PURE__ */
|
|
123950
|
+
headerNode = /* @__PURE__ */ jsx41(Text42, { bold: true, color: Colors.AccentBlue, children: /* @__PURE__ */ jsx41(RenderInline, { text: headerText }) });
|
|
123926
123951
|
break;
|
|
123927
123952
|
case 3:
|
|
123928
|
-
headerNode = /* @__PURE__ */
|
|
123953
|
+
headerNode = /* @__PURE__ */ jsx41(Text42, { bold: true, children: /* @__PURE__ */ jsx41(RenderInline, { text: headerText }) });
|
|
123929
123954
|
break;
|
|
123930
123955
|
case 4:
|
|
123931
|
-
headerNode = /* @__PURE__ */
|
|
123956
|
+
headerNode = /* @__PURE__ */ jsx41(Text42, { italic: true, color: Colors.Gray, children: /* @__PURE__ */ jsx41(RenderInline, { text: headerText }) });
|
|
123932
123957
|
break;
|
|
123933
123958
|
default:
|
|
123934
|
-
headerNode = /* @__PURE__ */
|
|
123959
|
+
headerNode = /* @__PURE__ */ jsx41(Text42, { children: /* @__PURE__ */ jsx41(RenderInline, { text: headerText }) });
|
|
123935
123960
|
break;
|
|
123936
123961
|
}
|
|
123937
|
-
if (headerNode) addContentBlock(/* @__PURE__ */
|
|
123962
|
+
if (headerNode) addContentBlock(/* @__PURE__ */ jsx41(Box34, { children: headerNode }, key));
|
|
123938
123963
|
} else if (ulMatch) {
|
|
123939
123964
|
const leadingWhitespace = ulMatch[1];
|
|
123940
123965
|
const marker = ulMatch[2];
|
|
123941
123966
|
const itemText = ulMatch[3];
|
|
123942
123967
|
addContentBlock(
|
|
123943
|
-
/* @__PURE__ */
|
|
123968
|
+
/* @__PURE__ */ jsx41(
|
|
123944
123969
|
RenderListItem,
|
|
123945
123970
|
{
|
|
123946
123971
|
itemText,
|
|
@@ -123956,7 +123981,7 @@ var MarkdownDisplayInternal = ({
|
|
|
123956
123981
|
const marker = olMatch[2];
|
|
123957
123982
|
const itemText = olMatch[3];
|
|
123958
123983
|
addContentBlock(
|
|
123959
|
-
/* @__PURE__ */
|
|
123984
|
+
/* @__PURE__ */ jsx41(
|
|
123960
123985
|
RenderListItem,
|
|
123961
123986
|
{
|
|
123962
123987
|
itemText,
|
|
@@ -123971,20 +123996,20 @@ var MarkdownDisplayInternal = ({
|
|
|
123971
123996
|
if (line.trim().length === 0 && !inCodeBlock) {
|
|
123972
123997
|
if (!lastLineEmpty) {
|
|
123973
123998
|
contentBlocks.push(
|
|
123974
|
-
/* @__PURE__ */
|
|
123999
|
+
/* @__PURE__ */ jsx41(Box34, { height: EMPTY_LINE_HEIGHT }, `spacer-${index}`)
|
|
123975
124000
|
);
|
|
123976
124001
|
lastLineEmpty = true;
|
|
123977
124002
|
}
|
|
123978
124003
|
} else {
|
|
123979
124004
|
addContentBlock(
|
|
123980
|
-
/* @__PURE__ */
|
|
124005
|
+
/* @__PURE__ */ jsx41(Box34, { children: /* @__PURE__ */ jsx41(Text42, { wrap: "wrap", children: /* @__PURE__ */ jsx41(RenderInline, { text: line }) }) }, key)
|
|
123981
124006
|
);
|
|
123982
124007
|
}
|
|
123983
124008
|
}
|
|
123984
124009
|
});
|
|
123985
124010
|
if (inCodeBlock) {
|
|
123986
124011
|
addContentBlock(
|
|
123987
|
-
/* @__PURE__ */
|
|
124012
|
+
/* @__PURE__ */ jsx41(
|
|
123988
124013
|
RenderCodeBlock,
|
|
123989
124014
|
{
|
|
123990
124015
|
content: codeBlockContent,
|
|
@@ -123999,7 +124024,7 @@ var MarkdownDisplayInternal = ({
|
|
|
123999
124024
|
}
|
|
124000
124025
|
if (inTable && tableHeaders.length > 0 && tableRows.length > 0) {
|
|
124001
124026
|
addContentBlock(
|
|
124002
|
-
/* @__PURE__ */
|
|
124027
|
+
/* @__PURE__ */ jsx41(
|
|
124003
124028
|
RenderTable,
|
|
124004
124029
|
{
|
|
124005
124030
|
headers: tableHeaders,
|
|
@@ -124010,7 +124035,7 @@ var MarkdownDisplayInternal = ({
|
|
|
124010
124035
|
)
|
|
124011
124036
|
);
|
|
124012
124037
|
}
|
|
124013
|
-
return /* @__PURE__ */
|
|
124038
|
+
return /* @__PURE__ */ jsx41(Fragment7, { children: contentBlocks });
|
|
124014
124039
|
};
|
|
124015
124040
|
var RenderCodeBlockInternal = ({
|
|
124016
124041
|
content,
|
|
@@ -124029,7 +124054,7 @@ var RenderCodeBlockInternal = ({
|
|
|
124029
124054
|
);
|
|
124030
124055
|
if (content.length > MAX_CODE_LINES_WHEN_PENDING) {
|
|
124031
124056
|
if (MAX_CODE_LINES_WHEN_PENDING < MIN_LINES_FOR_MESSAGE) {
|
|
124032
|
-
return /* @__PURE__ */
|
|
124057
|
+
return /* @__PURE__ */ jsx41(Box34, { paddingLeft: CODE_BLOCK_PREFIX_PADDING, children: /* @__PURE__ */ jsx41(Text42, { color: Colors.Gray, children: "... code is being written ..." }) });
|
|
124033
124058
|
}
|
|
124034
124059
|
const truncatedContent = content.slice(0, MAX_CODE_LINES_WHEN_PENDING);
|
|
124035
124060
|
const colorizedTruncatedCode = colorizeCode(
|
|
@@ -124042,7 +124067,7 @@ var RenderCodeBlockInternal = ({
|
|
|
124042
124067
|
);
|
|
124043
124068
|
return /* @__PURE__ */ jsxs38(Box34, { paddingLeft: CODE_BLOCK_PREFIX_PADDING, flexDirection: "column", children: [
|
|
124044
124069
|
colorizedTruncatedCode,
|
|
124045
|
-
/* @__PURE__ */
|
|
124070
|
+
/* @__PURE__ */ jsx41(Text42, { color: Colors.Gray, children: "... generating more ..." })
|
|
124046
124071
|
] });
|
|
124047
124072
|
}
|
|
124048
124073
|
}
|
|
@@ -124055,7 +124080,7 @@ var RenderCodeBlockInternal = ({
|
|
|
124055
124080
|
void 0,
|
|
124056
124081
|
settings
|
|
124057
124082
|
);
|
|
124058
|
-
return /* @__PURE__ */
|
|
124083
|
+
return /* @__PURE__ */ jsx41(
|
|
124059
124084
|
Box34,
|
|
124060
124085
|
{
|
|
124061
124086
|
paddingLeft: CODE_BLOCK_PREFIX_PADDING,
|
|
@@ -124082,8 +124107,8 @@ var RenderListItemInternal = ({
|
|
|
124082
124107
|
paddingLeft: indentation + LIST_ITEM_PREFIX_PADDING,
|
|
124083
124108
|
flexDirection: "row",
|
|
124084
124109
|
children: [
|
|
124085
|
-
/* @__PURE__ */
|
|
124086
|
-
/* @__PURE__ */
|
|
124110
|
+
/* @__PURE__ */ jsx41(Box34, { width: prefixWidth, children: /* @__PURE__ */ jsx41(Text42, { children: prefix }) }),
|
|
124111
|
+
/* @__PURE__ */ jsx41(Box34, { flexGrow: LIST_ITEM_TEXT_FLEX_GROW, children: /* @__PURE__ */ jsx41(Text42, { wrap: "wrap", children: /* @__PURE__ */ jsx41(RenderInline, { text: itemText }) }) })
|
|
124087
124112
|
]
|
|
124088
124113
|
}
|
|
124089
124114
|
);
|
|
@@ -124093,12 +124118,12 @@ var RenderTableInternal = ({
|
|
|
124093
124118
|
headers,
|
|
124094
124119
|
rows,
|
|
124095
124120
|
terminalWidth
|
|
124096
|
-
}) => /* @__PURE__ */
|
|
124121
|
+
}) => /* @__PURE__ */ jsx41(TableRenderer, { headers, rows, terminalWidth });
|
|
124097
124122
|
var RenderTable = React27.memo(RenderTableInternal);
|
|
124098
124123
|
var MarkdownDisplay = React27.memo(MarkdownDisplayInternal);
|
|
124099
124124
|
|
|
124100
124125
|
// packages/cli/src/ui/components/messages/GeminiMessage.tsx
|
|
124101
|
-
import { jsx as
|
|
124126
|
+
import { jsx as jsx42, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
124102
124127
|
var GeminiMessage = ({
|
|
124103
124128
|
text,
|
|
124104
124129
|
isPending,
|
|
@@ -124108,8 +124133,8 @@ var GeminiMessage = ({
|
|
|
124108
124133
|
const prefix = "\u2726 ";
|
|
124109
124134
|
const prefixWidth = prefix.length;
|
|
124110
124135
|
return /* @__PURE__ */ jsxs39(Box35, { flexDirection: "row", children: [
|
|
124111
|
-
/* @__PURE__ */
|
|
124112
|
-
/* @__PURE__ */
|
|
124136
|
+
/* @__PURE__ */ jsx42(Box35, { width: prefixWidth, children: /* @__PURE__ */ jsx42(Text43, { color: Colors.AccentPurple, children: prefix }) }),
|
|
124137
|
+
/* @__PURE__ */ jsx42(Box35, { flexGrow: 1, flexDirection: "column", children: /* @__PURE__ */ jsx42(
|
|
124113
124138
|
MarkdownDisplay,
|
|
124114
124139
|
{
|
|
124115
124140
|
text,
|
|
@@ -124123,25 +124148,25 @@ var GeminiMessage = ({
|
|
|
124123
124148
|
|
|
124124
124149
|
// packages/cli/src/ui/components/messages/InfoMessage.tsx
|
|
124125
124150
|
import { Text as Text44, Box as Box36 } from "ink";
|
|
124126
|
-
import { jsx as
|
|
124151
|
+
import { jsx as jsx43, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
124127
124152
|
var InfoMessage = ({ text }) => {
|
|
124128
124153
|
const prefix = "\u2139 ";
|
|
124129
124154
|
const prefixWidth = prefix.length;
|
|
124130
124155
|
return /* @__PURE__ */ jsxs40(Box36, { flexDirection: "row", marginTop: 1, children: [
|
|
124131
|
-
/* @__PURE__ */
|
|
124132
|
-
/* @__PURE__ */
|
|
124156
|
+
/* @__PURE__ */ jsx43(Box36, { width: prefixWidth, children: /* @__PURE__ */ jsx43(Text44, { color: Colors.AccentYellow, children: prefix }) }),
|
|
124157
|
+
/* @__PURE__ */ jsx43(Box36, { flexGrow: 1, children: /* @__PURE__ */ jsx43(Text44, { wrap: "wrap", color: Colors.AccentYellow, children: /* @__PURE__ */ jsx43(RenderInline, { text }) }) })
|
|
124133
124158
|
] });
|
|
124134
124159
|
};
|
|
124135
124160
|
|
|
124136
124161
|
// packages/cli/src/ui/components/messages/ErrorMessage.tsx
|
|
124137
124162
|
import { Text as Text45, Box as Box37 } from "ink";
|
|
124138
|
-
import { jsx as
|
|
124163
|
+
import { jsx as jsx44, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
124139
124164
|
var ErrorMessage = ({ text }) => {
|
|
124140
124165
|
const prefix = "\u2715 ";
|
|
124141
124166
|
const prefixWidth = prefix.length;
|
|
124142
124167
|
return /* @__PURE__ */ jsxs41(Box37, { flexDirection: "row", marginBottom: 1, children: [
|
|
124143
|
-
/* @__PURE__ */
|
|
124144
|
-
/* @__PURE__ */
|
|
124168
|
+
/* @__PURE__ */ jsx44(Box37, { width: prefixWidth, children: /* @__PURE__ */ jsx44(Text45, { color: Colors.AccentRed, children: prefix }) }),
|
|
124169
|
+
/* @__PURE__ */ jsx44(Box37, { flexGrow: 1, children: /* @__PURE__ */ jsx44(Text45, { wrap: "wrap", color: Colors.AccentRed, children: text }) })
|
|
124145
124170
|
] });
|
|
124146
124171
|
};
|
|
124147
124172
|
|
|
@@ -124155,7 +124180,7 @@ import { Box as Box39, Text as Text47 } from "ink";
|
|
|
124155
124180
|
|
|
124156
124181
|
// packages/cli/src/ui/components/TodoDisplay.tsx
|
|
124157
124182
|
import { Box as Box38, Text as Text46 } from "ink";
|
|
124158
|
-
import { jsx as
|
|
124183
|
+
import { jsx as jsx45, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
124159
124184
|
var STATUS_ICONS = {
|
|
124160
124185
|
pending: "\u25CB",
|
|
124161
124186
|
in_progress: "\u25D0",
|
|
@@ -124165,7 +124190,7 @@ var TodoDisplay = ({ todos }) => {
|
|
|
124165
124190
|
if (!todos || todos.length === 0) {
|
|
124166
124191
|
return null;
|
|
124167
124192
|
}
|
|
124168
|
-
return /* @__PURE__ */
|
|
124193
|
+
return /* @__PURE__ */ jsx45(Box38, { flexDirection: "column", children: todos.map((todo) => /* @__PURE__ */ jsx45(TodoItemRow, { todo }, todo.id)) });
|
|
124169
124194
|
};
|
|
124170
124195
|
var TodoItemRow = ({ todo }) => {
|
|
124171
124196
|
const statusIcon = STATUS_ICONS[todo.status];
|
|
@@ -124173,13 +124198,13 @@ var TodoItemRow = ({ todo }) => {
|
|
|
124173
124198
|
const isInProgress = todo.status === "in_progress";
|
|
124174
124199
|
const itemColor = isCompleted ? Colors.Foreground : isInProgress ? Colors.AccentGreen : Colors.Foreground;
|
|
124175
124200
|
return /* @__PURE__ */ jsxs42(Box38, { flexDirection: "row", minHeight: 1, children: [
|
|
124176
|
-
/* @__PURE__ */
|
|
124177
|
-
/* @__PURE__ */
|
|
124201
|
+
/* @__PURE__ */ jsx45(Box38, { width: 3, children: /* @__PURE__ */ jsx45(Text46, { color: itemColor, children: statusIcon }) }),
|
|
124202
|
+
/* @__PURE__ */ jsx45(Box38, { flexGrow: 1, children: /* @__PURE__ */ jsx45(Text46, { color: itemColor, strikethrough: isCompleted, wrap: "wrap", children: todo.content }) })
|
|
124178
124203
|
] });
|
|
124179
124204
|
};
|
|
124180
124205
|
|
|
124181
124206
|
// packages/cli/src/ui/components/messages/ToolMessage.tsx
|
|
124182
|
-
import { jsx as
|
|
124207
|
+
import { jsx as jsx46, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
124183
124208
|
var STATIC_HEIGHT = 1;
|
|
124184
124209
|
var RESERVED_LINE_COUNT = 5;
|
|
124185
124210
|
var STATUS_INDICATOR_WIDTH = 3;
|
|
@@ -124208,14 +124233,14 @@ var useResultDisplayRenderer = (resultDisplay) => React28.useMemo(() => {
|
|
|
124208
124233
|
}, [resultDisplay]);
|
|
124209
124234
|
var TodoResultRenderer = ({
|
|
124210
124235
|
data
|
|
124211
|
-
}) => /* @__PURE__ */
|
|
124236
|
+
}) => /* @__PURE__ */ jsx46(TodoDisplay, { todos: data.todos });
|
|
124212
124237
|
var StringResultRenderer = ({ data, renderAsMarkdown, availableHeight, childWidth }) => {
|
|
124213
124238
|
let displayData = data;
|
|
124214
124239
|
if (displayData.length > MAXIMUM_RESULT_DISPLAY_CHARACTERS) {
|
|
124215
124240
|
displayData = "..." + displayData.slice(-MAXIMUM_RESULT_DISPLAY_CHARACTERS);
|
|
124216
124241
|
}
|
|
124217
124242
|
if (renderAsMarkdown) {
|
|
124218
|
-
return /* @__PURE__ */
|
|
124243
|
+
return /* @__PURE__ */ jsx46(Box39, { flexDirection: "column", children: /* @__PURE__ */ jsx46(
|
|
124219
124244
|
MarkdownDisplay,
|
|
124220
124245
|
{
|
|
124221
124246
|
text: displayData,
|
|
@@ -124225,9 +124250,9 @@ var StringResultRenderer = ({ data, renderAsMarkdown, availableHeight, childWidt
|
|
|
124225
124250
|
}
|
|
124226
124251
|
) });
|
|
124227
124252
|
}
|
|
124228
|
-
return /* @__PURE__ */
|
|
124253
|
+
return /* @__PURE__ */ jsx46(MaxSizedBox, { maxHeight: availableHeight, maxWidth: childWidth, children: /* @__PURE__ */ jsx46(Box39, { children: /* @__PURE__ */ jsx46(Text47, { wrap: "wrap", children: displayData }) }) });
|
|
124229
124254
|
};
|
|
124230
|
-
var DiffResultRenderer = ({ data, availableHeight, childWidth }) => /* @__PURE__ */
|
|
124255
|
+
var DiffResultRenderer = ({ data, availableHeight, childWidth }) => /* @__PURE__ */ jsx46(
|
|
124231
124256
|
DiffRenderer,
|
|
124232
124257
|
{
|
|
124233
124258
|
diffContent: data.fileDiff,
|
|
@@ -124258,8 +124283,8 @@ var ToolMessage = ({
|
|
|
124258
124283
|
const displayRenderer = useResultDisplayRenderer(resultDisplay);
|
|
124259
124284
|
return /* @__PURE__ */ jsxs43(Box39, { paddingX: 1, paddingY: 0, flexDirection: "column", children: [
|
|
124260
124285
|
/* @__PURE__ */ jsxs43(Box39, { minHeight: 1, children: [
|
|
124261
|
-
/* @__PURE__ */
|
|
124262
|
-
/* @__PURE__ */
|
|
124286
|
+
/* @__PURE__ */ jsx46(ToolStatusIndicator, { status }),
|
|
124287
|
+
/* @__PURE__ */ jsx46(
|
|
124263
124288
|
ToolInfo,
|
|
124264
124289
|
{
|
|
124265
124290
|
name: name2,
|
|
@@ -124268,11 +124293,11 @@ var ToolMessage = ({
|
|
|
124268
124293
|
emphasis
|
|
124269
124294
|
}
|
|
124270
124295
|
),
|
|
124271
|
-
emphasis === "high" && /* @__PURE__ */
|
|
124296
|
+
emphasis === "high" && /* @__PURE__ */ jsx46(TrailingIndicator, {})
|
|
124272
124297
|
] }),
|
|
124273
|
-
displayRenderer.type !== "none" && /* @__PURE__ */
|
|
124274
|
-
displayRenderer.type === "todo" && /* @__PURE__ */
|
|
124275
|
-
displayRenderer.type === "string" && /* @__PURE__ */
|
|
124298
|
+
displayRenderer.type !== "none" && /* @__PURE__ */ jsx46(Box39, { paddingLeft: STATUS_INDICATOR_WIDTH, width: "100%", marginTop: 1, children: /* @__PURE__ */ jsxs43(Box39, { flexDirection: "column", children: [
|
|
124299
|
+
displayRenderer.type === "todo" && /* @__PURE__ */ jsx46(TodoResultRenderer, { data: displayRenderer.data }),
|
|
124300
|
+
displayRenderer.type === "string" && /* @__PURE__ */ jsx46(
|
|
124276
124301
|
StringResultRenderer,
|
|
124277
124302
|
{
|
|
124278
124303
|
data: displayRenderer.data,
|
|
@@ -124281,7 +124306,7 @@ var ToolMessage = ({
|
|
|
124281
124306
|
childWidth
|
|
124282
124307
|
}
|
|
124283
124308
|
),
|
|
124284
|
-
displayRenderer.type === "diff" && /* @__PURE__ */
|
|
124309
|
+
displayRenderer.type === "diff" && /* @__PURE__ */ jsx46(
|
|
124285
124310
|
DiffResultRenderer,
|
|
124286
124311
|
{
|
|
124287
124312
|
data: displayRenderer.data,
|
|
@@ -124295,18 +124320,18 @@ var ToolMessage = ({
|
|
|
124295
124320
|
var ToolStatusIndicator = ({
|
|
124296
124321
|
status
|
|
124297
124322
|
}) => /* @__PURE__ */ jsxs43(Box39, { minWidth: STATUS_INDICATOR_WIDTH, children: [
|
|
124298
|
-
status === "Pending" /* Pending */ && /* @__PURE__ */
|
|
124299
|
-
status === "Executing" /* Executing */ && /* @__PURE__ */
|
|
124323
|
+
status === "Pending" /* Pending */ && /* @__PURE__ */ jsx46(Text47, { color: Colors.AccentGreen, children: "o" }),
|
|
124324
|
+
status === "Executing" /* Executing */ && /* @__PURE__ */ jsx46(
|
|
124300
124325
|
GeminiRespondingSpinner,
|
|
124301
124326
|
{
|
|
124302
124327
|
spinnerType: "toggle",
|
|
124303
124328
|
nonRespondingDisplay: "\u22B7"
|
|
124304
124329
|
}
|
|
124305
124330
|
),
|
|
124306
|
-
status === "Success" /* Success */ && /* @__PURE__ */
|
|
124307
|
-
status === "Confirming" /* Confirming */ && /* @__PURE__ */
|
|
124308
|
-
status === "Canceled" /* Canceled */ && /* @__PURE__ */
|
|
124309
|
-
status === "Error" /* Error */ && /* @__PURE__ */
|
|
124331
|
+
status === "Success" /* Success */ && /* @__PURE__ */ jsx46(Text47, { color: Colors.AccentGreen, children: "\u2714" }),
|
|
124332
|
+
status === "Confirming" /* Confirming */ && /* @__PURE__ */ jsx46(Text47, { color: Colors.AccentYellow, children: "?" }),
|
|
124333
|
+
status === "Canceled" /* Canceled */ && /* @__PURE__ */ jsx46(Text47, { color: Colors.AccentYellow, bold: true, children: "-" }),
|
|
124334
|
+
status === "Error" /* Error */ && /* @__PURE__ */ jsx46(Text47, { color: Colors.AccentRed, bold: true, children: "x" })
|
|
124310
124335
|
] });
|
|
124311
124336
|
var ToolInfo = ({
|
|
124312
124337
|
name: name2,
|
|
@@ -124328,15 +124353,15 @@ var ToolInfo = ({
|
|
|
124328
124353
|
}
|
|
124329
124354
|
}
|
|
124330
124355
|
}, [emphasis]);
|
|
124331
|
-
return /* @__PURE__ */
|
|
124356
|
+
return /* @__PURE__ */ jsx46(Box39, { children: /* @__PURE__ */ jsxs43(
|
|
124332
124357
|
Text47,
|
|
124333
124358
|
{
|
|
124334
124359
|
wrap: "truncate-end",
|
|
124335
124360
|
strikethrough: status === "Canceled" /* Canceled */,
|
|
124336
124361
|
children: [
|
|
124337
|
-
/* @__PURE__ */
|
|
124362
|
+
/* @__PURE__ */ jsx46(Text47, { color: nameColor, bold: true, children: name2 }),
|
|
124338
124363
|
" ",
|
|
124339
|
-
/* @__PURE__ */
|
|
124364
|
+
/* @__PURE__ */ jsx46(Text47, { color: Colors.Gray, children: description })
|
|
124340
124365
|
]
|
|
124341
124366
|
}
|
|
124342
124367
|
) });
|
|
@@ -124349,7 +124374,7 @@ var TrailingIndicator = () => /* @__PURE__ */ jsxs43(Text47, { color: Colors.For
|
|
|
124349
124374
|
// packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
|
|
124350
124375
|
import { Box as Box40, Text as Text48 } from "ink";
|
|
124351
124376
|
init_dist2();
|
|
124352
|
-
import { jsx as
|
|
124377
|
+
import { jsx as jsx47, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
124353
124378
|
var ToolConfirmationMessage = ({
|
|
124354
124379
|
confirmationDetails,
|
|
124355
124380
|
config,
|
|
@@ -124412,8 +124437,8 @@ var ToolConfirmationMessage = ({
|
|
|
124412
124437
|
padding: 1,
|
|
124413
124438
|
overflow: "hidden",
|
|
124414
124439
|
children: [
|
|
124415
|
-
/* @__PURE__ */
|
|
124416
|
-
/* @__PURE__ */
|
|
124440
|
+
/* @__PURE__ */ jsx47(Text48, { children: "Modify in progress: " }),
|
|
124441
|
+
/* @__PURE__ */ jsx47(Text48, { color: Colors.AccentGreen, children: "Save and close external editor to continue" })
|
|
124417
124442
|
]
|
|
124418
124443
|
}
|
|
124419
124444
|
);
|
|
@@ -124444,7 +124469,7 @@ var ToolConfirmationMessage = ({
|
|
|
124444
124469
|
value: ToolConfirmationOutcome.Cancel
|
|
124445
124470
|
});
|
|
124446
124471
|
}
|
|
124447
|
-
bodyContent = /* @__PURE__ */
|
|
124472
|
+
bodyContent = /* @__PURE__ */ jsx47(
|
|
124448
124473
|
DiffRenderer,
|
|
124449
124474
|
{
|
|
124450
124475
|
diffContent: confirmationDetails.fileDiff,
|
|
@@ -124474,12 +124499,12 @@ var ToolConfirmationMessage = ({
|
|
|
124474
124499
|
if (bodyContentHeight !== void 0) {
|
|
124475
124500
|
bodyContentHeight -= 2;
|
|
124476
124501
|
}
|
|
124477
|
-
bodyContent = /* @__PURE__ */
|
|
124502
|
+
bodyContent = /* @__PURE__ */ jsx47(Box40, { flexDirection: "column", children: /* @__PURE__ */ jsx47(Box40, { paddingX: 1, marginLeft: 1, children: /* @__PURE__ */ jsx47(
|
|
124478
124503
|
MaxSizedBox,
|
|
124479
124504
|
{
|
|
124480
124505
|
maxHeight: bodyContentHeight,
|
|
124481
124506
|
maxWidth: Math.max(childWidth - 4, 1),
|
|
124482
|
-
children: /* @__PURE__ */
|
|
124507
|
+
children: /* @__PURE__ */ jsx47(Box40, { children: /* @__PURE__ */ jsx47(Text48, { color: Colors.AccentCyan, children: executionProps.command }) })
|
|
124483
124508
|
}
|
|
124484
124509
|
) }) });
|
|
124485
124510
|
} else if (confirmationDetails.type === "info") {
|
|
@@ -124501,13 +124526,13 @@ var ToolConfirmationMessage = ({
|
|
|
124501
124526
|
}
|
|
124502
124527
|
);
|
|
124503
124528
|
bodyContent = /* @__PURE__ */ jsxs44(Box40, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [
|
|
124504
|
-
/* @__PURE__ */
|
|
124529
|
+
/* @__PURE__ */ jsx47(Text48, { color: Colors.AccentCyan, children: /* @__PURE__ */ jsx47(RenderInline, { text: infoProps.prompt }) }),
|
|
124505
124530
|
displayUrls && infoProps.urls && infoProps.urls.length > 0 && /* @__PURE__ */ jsxs44(Box40, { flexDirection: "column", marginTop: 1, children: [
|
|
124506
|
-
/* @__PURE__ */
|
|
124531
|
+
/* @__PURE__ */ jsx47(Text48, { children: "URLs to fetch:" }),
|
|
124507
124532
|
infoProps.urls.map((url2) => /* @__PURE__ */ jsxs44(Text48, { children: [
|
|
124508
124533
|
" ",
|
|
124509
124534
|
"- ",
|
|
124510
|
-
/* @__PURE__ */
|
|
124535
|
+
/* @__PURE__ */ jsx47(RenderInline, { text: url2 })
|
|
124511
124536
|
] }, url2))
|
|
124512
124537
|
] })
|
|
124513
124538
|
] });
|
|
@@ -124545,9 +124570,9 @@ var ToolConfirmationMessage = ({
|
|
|
124545
124570
|
);
|
|
124546
124571
|
}
|
|
124547
124572
|
return /* @__PURE__ */ jsxs44(Box40, { flexDirection: "column", padding: 1, width: childWidth, children: [
|
|
124548
|
-
/* @__PURE__ */
|
|
124549
|
-
/* @__PURE__ */
|
|
124550
|
-
/* @__PURE__ */
|
|
124573
|
+
/* @__PURE__ */ jsx47(Box40, { flexGrow: 1, flexShrink: 1, overflow: "hidden", marginBottom: 1, children: bodyContent }),
|
|
124574
|
+
/* @__PURE__ */ jsx47(Box40, { marginBottom: 1, flexShrink: 0, children: /* @__PURE__ */ jsx47(Text48, { wrap: "truncate", children: question }) }),
|
|
124575
|
+
/* @__PURE__ */ jsx47(Box40, { flexShrink: 0, children: /* @__PURE__ */ jsx47(
|
|
124551
124576
|
RadioButtonSelect,
|
|
124552
124577
|
{
|
|
124553
124578
|
items: options2,
|
|
@@ -124559,7 +124584,7 @@ var ToolConfirmationMessage = ({
|
|
|
124559
124584
|
};
|
|
124560
124585
|
|
|
124561
124586
|
// packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
|
|
124562
|
-
import { jsx as
|
|
124587
|
+
import { jsx as jsx48, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
124563
124588
|
var ToolGroupMessage = ({
|
|
124564
124589
|
toolCalls,
|
|
124565
124590
|
availableTerminalHeight,
|
|
@@ -124595,7 +124620,7 @@ var ToolGroupMessage = ({
|
|
|
124595
124620
|
),
|
|
124596
124621
|
1
|
|
124597
124622
|
) : void 0;
|
|
124598
|
-
return /* @__PURE__ */
|
|
124623
|
+
return /* @__PURE__ */ jsx48(
|
|
124599
124624
|
Box41,
|
|
124600
124625
|
{
|
|
124601
124626
|
flexDirection: "column",
|
|
@@ -124607,7 +124632,7 @@ var ToolGroupMessage = ({
|
|
|
124607
124632
|
children: toolCalls.map((tool) => {
|
|
124608
124633
|
const isConfirming = toolAwaitingApproval?.callId === tool.callId;
|
|
124609
124634
|
return /* @__PURE__ */ jsxs45(Box41, { flexDirection: "column", minHeight: 1, children: [
|
|
124610
|
-
/* @__PURE__ */
|
|
124635
|
+
/* @__PURE__ */ jsx48(Box41, { flexDirection: "row", alignItems: "center", children: /* @__PURE__ */ jsx48(
|
|
124611
124636
|
ToolMessage,
|
|
124612
124637
|
{
|
|
124613
124638
|
callId: tool.callId,
|
|
@@ -124622,7 +124647,7 @@ var ToolGroupMessage = ({
|
|
|
124622
124647
|
renderOutputAsMarkdown: tool.renderOutputAsMarkdown
|
|
124623
124648
|
}
|
|
124624
124649
|
) }),
|
|
124625
|
-
tool.status === "Confirming" /* Confirming */ && isConfirming && tool.confirmationDetails && /* @__PURE__ */
|
|
124650
|
+
tool.status === "Confirming" /* Confirming */ && isConfirming && tool.confirmationDetails && /* @__PURE__ */ jsx48(
|
|
124626
124651
|
ToolConfirmationMessage,
|
|
124627
124652
|
{
|
|
124628
124653
|
confirmationDetails: tool.confirmationDetails,
|
|
@@ -124640,7 +124665,7 @@ var ToolGroupMessage = ({
|
|
|
124640
124665
|
|
|
124641
124666
|
// packages/cli/src/ui/components/messages/GeminiMessageContent.tsx
|
|
124642
124667
|
import { Box as Box42 } from "ink";
|
|
124643
|
-
import { jsx as
|
|
124668
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
124644
124669
|
var GeminiMessageContent = ({
|
|
124645
124670
|
text,
|
|
124646
124671
|
isPending,
|
|
@@ -124649,7 +124674,7 @@ var GeminiMessageContent = ({
|
|
|
124649
124674
|
}) => {
|
|
124650
124675
|
const originalPrefix = "\u2726 ";
|
|
124651
124676
|
const prefixWidth = originalPrefix.length;
|
|
124652
|
-
return /* @__PURE__ */
|
|
124677
|
+
return /* @__PURE__ */ jsx49(Box42, { flexDirection: "column", paddingLeft: prefixWidth, children: /* @__PURE__ */ jsx49(
|
|
124653
124678
|
MarkdownDisplay,
|
|
124654
124679
|
{
|
|
124655
124680
|
text,
|
|
@@ -124663,14 +124688,14 @@ var GeminiMessageContent = ({
|
|
|
124663
124688
|
// packages/cli/src/ui/components/messages/CompressionMessage.tsx
|
|
124664
124689
|
import { Box as Box43, Text as Text49 } from "ink";
|
|
124665
124690
|
import Spinner3 from "ink-spinner";
|
|
124666
|
-
import { jsx as
|
|
124691
|
+
import { jsx as jsx50, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
124667
124692
|
var CompressionMessage = ({
|
|
124668
124693
|
compression
|
|
124669
124694
|
}) => {
|
|
124670
124695
|
const text = compression.isPending ? "Compressing chat history" : `Chat history compressed from ${compression.originalTokenCount ?? "unknown"} to ${compression.newTokenCount ?? "unknown"} tokens.`;
|
|
124671
124696
|
return /* @__PURE__ */ jsxs46(Box43, { flexDirection: "row", children: [
|
|
124672
|
-
/* @__PURE__ */
|
|
124673
|
-
/* @__PURE__ */
|
|
124697
|
+
/* @__PURE__ */ jsx50(Box43, { marginRight: 1, children: compression.isPending ? /* @__PURE__ */ jsx50(Spinner3, { type: "dots" }) : /* @__PURE__ */ jsx50(Text49, { color: Colors.AccentPurple, children: "\u2726" }) }),
|
|
124698
|
+
/* @__PURE__ */ jsx50(Box43, { children: /* @__PURE__ */ jsx50(
|
|
124674
124699
|
Text49,
|
|
124675
124700
|
{
|
|
124676
124701
|
color: compression.isPending ? Colors.AccentPurple : Colors.AccentGreen,
|
|
@@ -124685,7 +124710,7 @@ import { Box as Box49 } from "ink";
|
|
|
124685
124710
|
|
|
124686
124711
|
// packages/cli/src/ui/components/AboutBox.tsx
|
|
124687
124712
|
import { Box as Box44, Text as Text50 } from "ink";
|
|
124688
|
-
import { jsx as
|
|
124713
|
+
import { jsx as jsx51, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
124689
124714
|
var AboutBox = ({
|
|
124690
124715
|
cliVersion,
|
|
124691
124716
|
osVersion,
|
|
@@ -124704,38 +124729,38 @@ var AboutBox = ({
|
|
|
124704
124729
|
marginY: 1,
|
|
124705
124730
|
width: "100%",
|
|
124706
124731
|
children: [
|
|
124707
|
-
/* @__PURE__ */
|
|
124732
|
+
/* @__PURE__ */ jsx51(Box44, { marginBottom: 1, children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.AccentPurple, children: "About FSS Link" }) }),
|
|
124708
124733
|
/* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124709
|
-
/* @__PURE__ */
|
|
124710
|
-
/* @__PURE__ */
|
|
124734
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "CLI Version" }) }),
|
|
124735
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: cliVersion }) })
|
|
124711
124736
|
] }),
|
|
124712
124737
|
GIT_COMMIT_INFO && !["N/A"].includes(GIT_COMMIT_INFO) && /* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124713
|
-
/* @__PURE__ */
|
|
124714
|
-
/* @__PURE__ */
|
|
124738
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "Git Commit" }) }),
|
|
124739
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: GIT_COMMIT_INFO }) })
|
|
124715
124740
|
] }),
|
|
124716
124741
|
/* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124717
|
-
/* @__PURE__ */
|
|
124718
|
-
/* @__PURE__ */
|
|
124742
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "Model" }) }),
|
|
124743
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: modelVersion }) })
|
|
124719
124744
|
] }),
|
|
124720
124745
|
/* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124721
|
-
/* @__PURE__ */
|
|
124722
|
-
/* @__PURE__ */
|
|
124746
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "Sandbox" }) }),
|
|
124747
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: sandboxEnv }) })
|
|
124723
124748
|
] }),
|
|
124724
124749
|
/* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124725
|
-
/* @__PURE__ */
|
|
124726
|
-
/* @__PURE__ */
|
|
124750
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "OS" }) }),
|
|
124751
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: osVersion }) })
|
|
124727
124752
|
] }),
|
|
124728
124753
|
/* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124729
|
-
/* @__PURE__ */
|
|
124730
|
-
/* @__PURE__ */
|
|
124754
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "Auth Method" }) }),
|
|
124755
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: selectedAuthType.startsWith("oauth") ? "OAuth" : selectedAuthType }) })
|
|
124731
124756
|
] }),
|
|
124732
124757
|
gcpProject && /* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124733
|
-
/* @__PURE__ */
|
|
124734
|
-
/* @__PURE__ */
|
|
124758
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "GCP Project" }) }),
|
|
124759
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: gcpProject }) })
|
|
124735
124760
|
] }),
|
|
124736
124761
|
ideClient && /* @__PURE__ */ jsxs47(Box44, { flexDirection: "row", children: [
|
|
124737
|
-
/* @__PURE__ */
|
|
124738
|
-
/* @__PURE__ */
|
|
124762
|
+
/* @__PURE__ */ jsx51(Box44, { width: "35%", children: /* @__PURE__ */ jsx51(Text50, { bold: true, color: Colors.LightBlue, children: "IDE Client" }) }),
|
|
124763
|
+
/* @__PURE__ */ jsx51(Box44, { children: /* @__PURE__ */ jsx51(Text50, { children: ideClient }) })
|
|
124739
124764
|
] })
|
|
124740
124765
|
]
|
|
124741
124766
|
}
|
|
@@ -124819,20 +124844,20 @@ var computeSessionStats = (metrics2) => {
|
|
|
124819
124844
|
};
|
|
124820
124845
|
|
|
124821
124846
|
// packages/cli/src/ui/components/StatsDisplay.tsx
|
|
124822
|
-
import { jsx as
|
|
124847
|
+
import { jsx as jsx52, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
124823
124848
|
var StatRow = ({ title, children }) => /* @__PURE__ */ jsxs48(Box45, { children: [
|
|
124824
|
-
/* @__PURE__ */
|
|
124849
|
+
/* @__PURE__ */ jsx52(Box45, { width: 28, children: /* @__PURE__ */ jsx52(Text51, { color: theme.text.link, children: title }) }),
|
|
124825
124850
|
children
|
|
124826
124851
|
] });
|
|
124827
124852
|
var SubStatRow = ({ title, children }) => /* @__PURE__ */ jsxs48(Box45, { paddingLeft: 2, children: [
|
|
124828
|
-
/* @__PURE__ */
|
|
124853
|
+
/* @__PURE__ */ jsx52(Box45, { width: 26, children: /* @__PURE__ */ jsxs48(Text51, { children: [
|
|
124829
124854
|
"\xBB ",
|
|
124830
124855
|
title
|
|
124831
124856
|
] }) }),
|
|
124832
124857
|
children
|
|
124833
124858
|
] });
|
|
124834
124859
|
var Section = ({ title, children }) => /* @__PURE__ */ jsxs48(Box45, { flexDirection: "column", width: "100%", marginBottom: 1, children: [
|
|
124835
|
-
/* @__PURE__ */
|
|
124860
|
+
/* @__PURE__ */ jsx52(Text51, { bold: true, children: title }),
|
|
124836
124861
|
children
|
|
124837
124862
|
] });
|
|
124838
124863
|
var ModelUsageTable = ({ models, totalCachedTokens, cacheEfficiency }) => {
|
|
@@ -124842,12 +124867,12 @@ var ModelUsageTable = ({ models, totalCachedTokens, cacheEfficiency }) => {
|
|
|
124842
124867
|
const outputTokensWidth = 15;
|
|
124843
124868
|
return /* @__PURE__ */ jsxs48(Box45, { flexDirection: "column", marginTop: 1, children: [
|
|
124844
124869
|
/* @__PURE__ */ jsxs48(Box45, { children: [
|
|
124845
|
-
/* @__PURE__ */
|
|
124846
|
-
/* @__PURE__ */
|
|
124847
|
-
/* @__PURE__ */
|
|
124848
|
-
/* @__PURE__ */
|
|
124870
|
+
/* @__PURE__ */ jsx52(Box45, { width: nameWidth, children: /* @__PURE__ */ jsx52(Text51, { bold: true, children: "Model Usage" }) }),
|
|
124871
|
+
/* @__PURE__ */ jsx52(Box45, { width: requestsWidth, justifyContent: "flex-end", children: /* @__PURE__ */ jsx52(Text51, { bold: true, children: "Reqs" }) }),
|
|
124872
|
+
/* @__PURE__ */ jsx52(Box45, { width: inputTokensWidth, justifyContent: "flex-end", children: /* @__PURE__ */ jsx52(Text51, { bold: true, children: "Input Tokens" }) }),
|
|
124873
|
+
/* @__PURE__ */ jsx52(Box45, { width: outputTokensWidth, justifyContent: "flex-end", children: /* @__PURE__ */ jsx52(Text51, { bold: true, children: "Output Tokens" }) })
|
|
124849
124874
|
] }),
|
|
124850
|
-
/* @__PURE__ */
|
|
124875
|
+
/* @__PURE__ */ jsx52(
|
|
124851
124876
|
Box45,
|
|
124852
124877
|
{
|
|
124853
124878
|
borderStyle: "round",
|
|
@@ -124859,22 +124884,22 @@ var ModelUsageTable = ({ models, totalCachedTokens, cacheEfficiency }) => {
|
|
|
124859
124884
|
}
|
|
124860
124885
|
),
|
|
124861
124886
|
Object.entries(models).map(([name2, modelMetrics]) => /* @__PURE__ */ jsxs48(Box45, { children: [
|
|
124862
|
-
/* @__PURE__ */
|
|
124863
|
-
/* @__PURE__ */
|
|
124864
|
-
/* @__PURE__ */
|
|
124865
|
-
/* @__PURE__ */
|
|
124887
|
+
/* @__PURE__ */ jsx52(Box45, { width: nameWidth, children: /* @__PURE__ */ jsx52(Text51, { children: name2.replace("-001", "") }) }),
|
|
124888
|
+
/* @__PURE__ */ jsx52(Box45, { width: requestsWidth, justifyContent: "flex-end", children: /* @__PURE__ */ jsx52(Text51, { children: modelMetrics.api.totalRequests }) }),
|
|
124889
|
+
/* @__PURE__ */ jsx52(Box45, { width: inputTokensWidth, justifyContent: "flex-end", children: /* @__PURE__ */ jsx52(Text51, { color: theme.status.warning, children: modelMetrics.tokens.prompt.toLocaleString() }) }),
|
|
124890
|
+
/* @__PURE__ */ jsx52(Box45, { width: outputTokensWidth, justifyContent: "flex-end", children: /* @__PURE__ */ jsx52(Text51, { color: theme.status.warning, children: modelMetrics.tokens.candidates.toLocaleString() }) })
|
|
124866
124891
|
] }, name2)),
|
|
124867
124892
|
cacheEfficiency > 0 && /* @__PURE__ */ jsxs48(Box45, { flexDirection: "column", marginTop: 1, children: [
|
|
124868
124893
|
/* @__PURE__ */ jsxs48(Text51, { children: [
|
|
124869
|
-
/* @__PURE__ */
|
|
124894
|
+
/* @__PURE__ */ jsx52(Text51, { color: theme.status.success, children: "Savings Highlight:" }),
|
|
124870
124895
|
" ",
|
|
124871
124896
|
totalCachedTokens.toLocaleString(),
|
|
124872
124897
|
" (",
|
|
124873
124898
|
cacheEfficiency.toFixed(1),
|
|
124874
124899
|
"%) of input tokens were served from the cache, reducing costs."
|
|
124875
124900
|
] }),
|
|
124876
|
-
/* @__PURE__ */
|
|
124877
|
-
/* @__PURE__ */
|
|
124901
|
+
/* @__PURE__ */ jsx52(Box45, { height: 1 }),
|
|
124902
|
+
/* @__PURE__ */ jsx52(Text51, { color: theme.text.secondary, children: "\xBB Tip: For a full token breakdown, run `/stats model`." })
|
|
124878
124903
|
] })
|
|
124879
124904
|
] });
|
|
124880
124905
|
};
|
|
@@ -124901,9 +124926,9 @@ var StatsDisplay = ({
|
|
|
124901
124926
|
);
|
|
124902
124927
|
const renderTitle = () => {
|
|
124903
124928
|
if (title) {
|
|
124904
|
-
return theme.ui.gradient && theme.ui.gradient.length > 0 ? /* @__PURE__ */
|
|
124929
|
+
return theme.ui.gradient && theme.ui.gradient.length > 0 ? /* @__PURE__ */ jsx52(Gradient3, { colors: theme.ui.gradient, children: /* @__PURE__ */ jsx52(Text51, { bold: true, children: title }) }) : /* @__PURE__ */ jsx52(Text51, { bold: true, color: theme.text.accent, children: title });
|
|
124905
124930
|
}
|
|
124906
|
-
return /* @__PURE__ */
|
|
124931
|
+
return /* @__PURE__ */ jsx52(Text51, { bold: true, color: theme.text.accent, children: "Session Stats" });
|
|
124907
124932
|
};
|
|
124908
124933
|
return /* @__PURE__ */ jsxs48(
|
|
124909
124934
|
Box45,
|
|
@@ -124915,10 +124940,10 @@ var StatsDisplay = ({
|
|
|
124915
124940
|
paddingX: 2,
|
|
124916
124941
|
children: [
|
|
124917
124942
|
renderTitle(),
|
|
124918
|
-
/* @__PURE__ */
|
|
124943
|
+
/* @__PURE__ */ jsx52(Box45, { height: 1 }),
|
|
124919
124944
|
/* @__PURE__ */ jsxs48(Section, { title: "Interaction Summary", children: [
|
|
124920
|
-
/* @__PURE__ */
|
|
124921
|
-
/* @__PURE__ */
|
|
124945
|
+
/* @__PURE__ */ jsx52(StatRow, { title: "Session ID:", children: /* @__PURE__ */ jsx52(Text51, { children: stats.sessionId }) }),
|
|
124946
|
+
/* @__PURE__ */ jsx52(StatRow, { title: "Tool Calls:", children: /* @__PURE__ */ jsxs48(Text51, { children: [
|
|
124922
124947
|
tools.totalCalls,
|
|
124923
124948
|
" (",
|
|
124924
124949
|
" ",
|
|
@@ -124933,11 +124958,11 @@ var StatsDisplay = ({
|
|
|
124933
124958
|
] }),
|
|
124934
124959
|
" )"
|
|
124935
124960
|
] }) }),
|
|
124936
|
-
/* @__PURE__ */
|
|
124961
|
+
/* @__PURE__ */ jsx52(StatRow, { title: "Success Rate:", children: /* @__PURE__ */ jsxs48(Text51, { color: successColor, children: [
|
|
124937
124962
|
computed.successRate.toFixed(1),
|
|
124938
124963
|
"%"
|
|
124939
124964
|
] }) }),
|
|
124940
|
-
computed.totalDecisions > 0 && /* @__PURE__ */
|
|
124965
|
+
computed.totalDecisions > 0 && /* @__PURE__ */ jsx52(StatRow, { title: "User Agreement:", children: /* @__PURE__ */ jsxs48(Text51, { color: agreementColor, children: [
|
|
124941
124966
|
computed.agreementRate.toFixed(1),
|
|
124942
124967
|
"%",
|
|
124943
124968
|
" ",
|
|
@@ -124947,7 +124972,7 @@ var StatsDisplay = ({
|
|
|
124947
124972
|
" reviewed)"
|
|
124948
124973
|
] })
|
|
124949
124974
|
] }) }),
|
|
124950
|
-
files && (files.totalLinesAdded > 0 || files.totalLinesRemoved > 0) && /* @__PURE__ */
|
|
124975
|
+
files && (files.totalLinesAdded > 0 || files.totalLinesRemoved > 0) && /* @__PURE__ */ jsx52(StatRow, { title: "Code Changes:", children: /* @__PURE__ */ jsxs48(Text51, { children: [
|
|
124951
124976
|
/* @__PURE__ */ jsxs48(Text51, { color: theme.status.success, children: [
|
|
124952
124977
|
"+",
|
|
124953
124978
|
files.totalLinesAdded
|
|
@@ -124960,9 +124985,9 @@ var StatsDisplay = ({
|
|
|
124960
124985
|
] }) })
|
|
124961
124986
|
] }),
|
|
124962
124987
|
/* @__PURE__ */ jsxs48(Section, { title: "Performance", children: [
|
|
124963
|
-
/* @__PURE__ */
|
|
124964
|
-
/* @__PURE__ */
|
|
124965
|
-
/* @__PURE__ */
|
|
124988
|
+
/* @__PURE__ */ jsx52(StatRow, { title: "Wall Time:", children: /* @__PURE__ */ jsx52(Text51, { children: duration }) }),
|
|
124989
|
+
/* @__PURE__ */ jsx52(StatRow, { title: "Agent Active:", children: /* @__PURE__ */ jsx52(Text51, { children: formatDuration(computed.agentActiveTime) }) }),
|
|
124990
|
+
/* @__PURE__ */ jsx52(SubStatRow, { title: "API Time:", children: /* @__PURE__ */ jsxs48(Text51, { children: [
|
|
124966
124991
|
formatDuration(computed.totalApiTime),
|
|
124967
124992
|
" ",
|
|
124968
124993
|
/* @__PURE__ */ jsxs48(Text51, { color: theme.text.secondary, children: [
|
|
@@ -124971,7 +124996,7 @@ var StatsDisplay = ({
|
|
|
124971
124996
|
"%)"
|
|
124972
124997
|
] })
|
|
124973
124998
|
] }) }),
|
|
124974
|
-
/* @__PURE__ */
|
|
124999
|
+
/* @__PURE__ */ jsx52(SubStatRow, { title: "Tool Time:", children: /* @__PURE__ */ jsxs48(Text51, { children: [
|
|
124975
125000
|
formatDuration(computed.totalToolTime),
|
|
124976
125001
|
" ",
|
|
124977
125002
|
/* @__PURE__ */ jsxs48(Text51, { color: theme.text.secondary, children: [
|
|
@@ -124981,7 +125006,7 @@ var StatsDisplay = ({
|
|
|
124981
125006
|
] })
|
|
124982
125007
|
] }) })
|
|
124983
125008
|
] }),
|
|
124984
|
-
Object.keys(models).length > 0 && /* @__PURE__ */
|
|
125009
|
+
Object.keys(models).length > 0 && /* @__PURE__ */ jsx52(
|
|
124985
125010
|
ModelUsageTable,
|
|
124986
125011
|
{
|
|
124987
125012
|
models,
|
|
@@ -124996,7 +125021,7 @@ var StatsDisplay = ({
|
|
|
124996
125021
|
|
|
124997
125022
|
// packages/cli/src/ui/components/ModelStatsDisplay.tsx
|
|
124998
125023
|
import { Box as Box46, Text as Text52 } from "ink";
|
|
124999
|
-
import { jsx as
|
|
125024
|
+
import { jsx as jsx53, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
125000
125025
|
var METRIC_COL_WIDTH = 28;
|
|
125001
125026
|
var MODEL_COL_WIDTH = 22;
|
|
125002
125027
|
var StatRow2 = ({
|
|
@@ -125005,8 +125030,8 @@ var StatRow2 = ({
|
|
|
125005
125030
|
isSubtle = false,
|
|
125006
125031
|
isSection = false
|
|
125007
125032
|
}) => /* @__PURE__ */ jsxs49(Box46, { children: [
|
|
125008
|
-
/* @__PURE__ */
|
|
125009
|
-
values.map((value, index) => /* @__PURE__ */
|
|
125033
|
+
/* @__PURE__ */ jsx53(Box46, { width: METRIC_COL_WIDTH, children: /* @__PURE__ */ jsx53(Text52, { bold: isSection, color: isSection ? void 0 : Colors.LightBlue, children: isSubtle ? ` \u21B3 ${title}` : title }) }),
|
|
125034
|
+
values.map((value, index) => /* @__PURE__ */ jsx53(Box46, { width: MODEL_COL_WIDTH, children: /* @__PURE__ */ jsx53(Text52, { children: value }) }, index))
|
|
125010
125035
|
] });
|
|
125011
125036
|
var ModelStatsDisplay = () => {
|
|
125012
125037
|
const { stats } = useSessionStats();
|
|
@@ -125015,14 +125040,14 @@ var ModelStatsDisplay = () => {
|
|
|
125015
125040
|
([, metrics2]) => metrics2.api.totalRequests > 0
|
|
125016
125041
|
);
|
|
125017
125042
|
if (activeModels.length === 0) {
|
|
125018
|
-
return /* @__PURE__ */
|
|
125043
|
+
return /* @__PURE__ */ jsx53(
|
|
125019
125044
|
Box46,
|
|
125020
125045
|
{
|
|
125021
125046
|
borderStyle: "round",
|
|
125022
125047
|
borderColor: Colors.Gray,
|
|
125023
125048
|
paddingY: 1,
|
|
125024
125049
|
paddingX: 2,
|
|
125025
|
-
children: /* @__PURE__ */
|
|
125050
|
+
children: /* @__PURE__ */ jsx53(Text52, { children: "No API calls have been made in this session." })
|
|
125026
125051
|
}
|
|
125027
125052
|
);
|
|
125028
125053
|
}
|
|
@@ -125044,13 +125069,13 @@ var ModelStatsDisplay = () => {
|
|
|
125044
125069
|
paddingY: 1,
|
|
125045
125070
|
paddingX: 2,
|
|
125046
125071
|
children: [
|
|
125047
|
-
/* @__PURE__ */
|
|
125048
|
-
/* @__PURE__ */
|
|
125072
|
+
/* @__PURE__ */ jsx53(Text52, { bold: true, color: Colors.AccentPurple, children: "Model Stats For Nerds" }),
|
|
125073
|
+
/* @__PURE__ */ jsx53(Box46, { height: 1 }),
|
|
125049
125074
|
/* @__PURE__ */ jsxs49(Box46, { children: [
|
|
125050
|
-
/* @__PURE__ */
|
|
125051
|
-
modelNames.map((name2) => /* @__PURE__ */
|
|
125075
|
+
/* @__PURE__ */ jsx53(Box46, { width: METRIC_COL_WIDTH, children: /* @__PURE__ */ jsx53(Text52, { bold: true, children: "Metric" }) }),
|
|
125076
|
+
modelNames.map((name2) => /* @__PURE__ */ jsx53(Box46, { width: MODEL_COL_WIDTH, children: /* @__PURE__ */ jsx53(Text52, { bold: true, children: name2 }) }, name2))
|
|
125052
125077
|
] }),
|
|
125053
|
-
/* @__PURE__ */
|
|
125078
|
+
/* @__PURE__ */ jsx53(
|
|
125054
125079
|
Box46,
|
|
125055
125080
|
{
|
|
125056
125081
|
borderStyle: "single",
|
|
@@ -125060,15 +125085,15 @@ var ModelStatsDisplay = () => {
|
|
|
125060
125085
|
borderRight: false
|
|
125061
125086
|
}
|
|
125062
125087
|
),
|
|
125063
|
-
/* @__PURE__ */
|
|
125064
|
-
/* @__PURE__ */
|
|
125088
|
+
/* @__PURE__ */ jsx53(StatRow2, { title: "API", values: [], isSection: true }),
|
|
125089
|
+
/* @__PURE__ */ jsx53(
|
|
125065
125090
|
StatRow2,
|
|
125066
125091
|
{
|
|
125067
125092
|
title: "Requests",
|
|
125068
125093
|
values: getModelValues((m) => m.api.totalRequests.toLocaleString())
|
|
125069
125094
|
}
|
|
125070
125095
|
),
|
|
125071
|
-
/* @__PURE__ */
|
|
125096
|
+
/* @__PURE__ */ jsx53(
|
|
125072
125097
|
StatRow2,
|
|
125073
125098
|
{
|
|
125074
125099
|
title: "Errors",
|
|
@@ -125089,7 +125114,7 @@ var ModelStatsDisplay = () => {
|
|
|
125089
125114
|
})
|
|
125090
125115
|
}
|
|
125091
125116
|
),
|
|
125092
|
-
/* @__PURE__ */
|
|
125117
|
+
/* @__PURE__ */ jsx53(
|
|
125093
125118
|
StatRow2,
|
|
125094
125119
|
{
|
|
125095
125120
|
title: "Avg Latency",
|
|
@@ -125099,16 +125124,16 @@ var ModelStatsDisplay = () => {
|
|
|
125099
125124
|
})
|
|
125100
125125
|
}
|
|
125101
125126
|
),
|
|
125102
|
-
/* @__PURE__ */
|
|
125103
|
-
/* @__PURE__ */
|
|
125104
|
-
/* @__PURE__ */
|
|
125127
|
+
/* @__PURE__ */ jsx53(Box46, { height: 1 }),
|
|
125128
|
+
/* @__PURE__ */ jsx53(StatRow2, { title: "Tokens", values: [], isSection: true }),
|
|
125129
|
+
/* @__PURE__ */ jsx53(
|
|
125105
125130
|
StatRow2,
|
|
125106
125131
|
{
|
|
125107
125132
|
title: "Total",
|
|
125108
|
-
values: getModelValues((m) => /* @__PURE__ */
|
|
125133
|
+
values: getModelValues((m) => /* @__PURE__ */ jsx53(Text52, { color: Colors.AccentYellow, children: m.tokens.total.toLocaleString() }))
|
|
125109
125134
|
}
|
|
125110
125135
|
),
|
|
125111
|
-
/* @__PURE__ */
|
|
125136
|
+
/* @__PURE__ */ jsx53(
|
|
125112
125137
|
StatRow2,
|
|
125113
125138
|
{
|
|
125114
125139
|
title: "Prompt",
|
|
@@ -125116,7 +125141,7 @@ var ModelStatsDisplay = () => {
|
|
|
125116
125141
|
values: getModelValues((m) => m.tokens.prompt.toLocaleString())
|
|
125117
125142
|
}
|
|
125118
125143
|
),
|
|
125119
|
-
hasCached && /* @__PURE__ */
|
|
125144
|
+
hasCached && /* @__PURE__ */ jsx53(
|
|
125120
125145
|
StatRow2,
|
|
125121
125146
|
{
|
|
125122
125147
|
title: "Cached",
|
|
@@ -125132,7 +125157,7 @@ var ModelStatsDisplay = () => {
|
|
|
125132
125157
|
})
|
|
125133
125158
|
}
|
|
125134
125159
|
),
|
|
125135
|
-
hasThoughts && /* @__PURE__ */
|
|
125160
|
+
hasThoughts && /* @__PURE__ */ jsx53(
|
|
125136
125161
|
StatRow2,
|
|
125137
125162
|
{
|
|
125138
125163
|
title: "Thoughts",
|
|
@@ -125140,7 +125165,7 @@ var ModelStatsDisplay = () => {
|
|
|
125140
125165
|
values: getModelValues((m) => m.tokens.thoughts.toLocaleString())
|
|
125141
125166
|
}
|
|
125142
125167
|
),
|
|
125143
|
-
hasTool && /* @__PURE__ */
|
|
125168
|
+
hasTool && /* @__PURE__ */ jsx53(
|
|
125144
125169
|
StatRow2,
|
|
125145
125170
|
{
|
|
125146
125171
|
title: "Tool",
|
|
@@ -125148,7 +125173,7 @@ var ModelStatsDisplay = () => {
|
|
|
125148
125173
|
values: getModelValues((m) => m.tokens.tool.toLocaleString())
|
|
125149
125174
|
}
|
|
125150
125175
|
),
|
|
125151
|
-
/* @__PURE__ */
|
|
125176
|
+
/* @__PURE__ */ jsx53(
|
|
125152
125177
|
StatRow2,
|
|
125153
125178
|
{
|
|
125154
125179
|
title: "Output",
|
|
@@ -125163,7 +125188,7 @@ var ModelStatsDisplay = () => {
|
|
|
125163
125188
|
|
|
125164
125189
|
// packages/cli/src/ui/components/ToolStatsDisplay.tsx
|
|
125165
125190
|
import { Box as Box47, Text as Text53 } from "ink";
|
|
125166
|
-
import { jsx as
|
|
125191
|
+
import { jsx as jsx54, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
125167
125192
|
var TOOL_NAME_COL_WIDTH = 25;
|
|
125168
125193
|
var CALLS_COL_WIDTH = 8;
|
|
125169
125194
|
var SUCCESS_RATE_COL_WIDTH = 15;
|
|
@@ -125176,13 +125201,13 @@ var StatRow3 = ({ name: name2, stats }) => {
|
|
|
125176
125201
|
yellow: TOOL_SUCCESS_RATE_MEDIUM
|
|
125177
125202
|
});
|
|
125178
125203
|
return /* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125179
|
-
/* @__PURE__ */
|
|
125180
|
-
/* @__PURE__ */
|
|
125181
|
-
/* @__PURE__ */
|
|
125204
|
+
/* @__PURE__ */ jsx54(Box47, { width: TOOL_NAME_COL_WIDTH, children: /* @__PURE__ */ jsx54(Text53, { color: Colors.LightBlue, children: name2 }) }),
|
|
125205
|
+
/* @__PURE__ */ jsx54(Box47, { width: CALLS_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { children: stats.count }) }),
|
|
125206
|
+
/* @__PURE__ */ jsx54(Box47, { width: SUCCESS_RATE_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsxs50(Text53, { color: successColor, children: [
|
|
125182
125207
|
successRate.toFixed(1),
|
|
125183
125208
|
"%"
|
|
125184
125209
|
] }) }),
|
|
125185
|
-
/* @__PURE__ */
|
|
125210
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { children: formatDuration(avgDuration) }) })
|
|
125186
125211
|
] });
|
|
125187
125212
|
};
|
|
125188
125213
|
var ToolStatsDisplay = () => {
|
|
@@ -125192,14 +125217,14 @@ var ToolStatsDisplay = () => {
|
|
|
125192
125217
|
([, metrics2]) => metrics2.count > 0
|
|
125193
125218
|
);
|
|
125194
125219
|
if (activeTools.length === 0) {
|
|
125195
|
-
return /* @__PURE__ */
|
|
125220
|
+
return /* @__PURE__ */ jsx54(
|
|
125196
125221
|
Box47,
|
|
125197
125222
|
{
|
|
125198
125223
|
borderStyle: "round",
|
|
125199
125224
|
borderColor: Colors.Gray,
|
|
125200
125225
|
paddingY: 1,
|
|
125201
125226
|
paddingX: 2,
|
|
125202
|
-
children: /* @__PURE__ */
|
|
125227
|
+
children: /* @__PURE__ */ jsx54(Text53, { children: "No tool calls have been made in this session." })
|
|
125203
125228
|
}
|
|
125204
125229
|
);
|
|
125205
125230
|
}
|
|
@@ -125228,15 +125253,15 @@ var ToolStatsDisplay = () => {
|
|
|
125228
125253
|
paddingX: 2,
|
|
125229
125254
|
width: 70,
|
|
125230
125255
|
children: [
|
|
125231
|
-
/* @__PURE__ */
|
|
125232
|
-
/* @__PURE__ */
|
|
125256
|
+
/* @__PURE__ */ jsx54(Text53, { bold: true, color: Colors.AccentPurple, children: "Tool Stats For Nerds" }),
|
|
125257
|
+
/* @__PURE__ */ jsx54(Box47, { height: 1 }),
|
|
125233
125258
|
/* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125234
|
-
/* @__PURE__ */
|
|
125235
|
-
/* @__PURE__ */
|
|
125236
|
-
/* @__PURE__ */
|
|
125237
|
-
/* @__PURE__ */
|
|
125259
|
+
/* @__PURE__ */ jsx54(Box47, { width: TOOL_NAME_COL_WIDTH, children: /* @__PURE__ */ jsx54(Text53, { bold: true, children: "Tool Name" }) }),
|
|
125260
|
+
/* @__PURE__ */ jsx54(Box47, { width: CALLS_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { bold: true, children: "Calls" }) }),
|
|
125261
|
+
/* @__PURE__ */ jsx54(Box47, { width: SUCCESS_RATE_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { bold: true, children: "Success Rate" }) }),
|
|
125262
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { bold: true, children: "Avg Duration" }) })
|
|
125238
125263
|
] }),
|
|
125239
|
-
/* @__PURE__ */
|
|
125264
|
+
/* @__PURE__ */ jsx54(
|
|
125240
125265
|
Box47,
|
|
125241
125266
|
{
|
|
125242
125267
|
borderStyle: "single",
|
|
@@ -125247,50 +125272,50 @@ var ToolStatsDisplay = () => {
|
|
|
125247
125272
|
width: "100%"
|
|
125248
125273
|
}
|
|
125249
125274
|
),
|
|
125250
|
-
activeTools.map(([name2, stats2]) => /* @__PURE__ */
|
|
125251
|
-
/* @__PURE__ */
|
|
125252
|
-
/* @__PURE__ */
|
|
125275
|
+
activeTools.map(([name2, stats2]) => /* @__PURE__ */ jsx54(StatRow3, { name: name2, stats: stats2 }, name2)),
|
|
125276
|
+
/* @__PURE__ */ jsx54(Box47, { height: 1 }),
|
|
125277
|
+
/* @__PURE__ */ jsx54(Text53, { bold: true, children: "User Decision Summary" }),
|
|
125253
125278
|
/* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125254
|
-
/* @__PURE__ */
|
|
125279
|
+
/* @__PURE__ */ jsx54(
|
|
125255
125280
|
Box47,
|
|
125256
125281
|
{
|
|
125257
125282
|
width: TOOL_NAME_COL_WIDTH + CALLS_COL_WIDTH + SUCCESS_RATE_COL_WIDTH,
|
|
125258
|
-
children: /* @__PURE__ */
|
|
125283
|
+
children: /* @__PURE__ */ jsx54(Text53, { color: Colors.LightBlue, children: "Total Reviewed Suggestions:" })
|
|
125259
125284
|
}
|
|
125260
125285
|
),
|
|
125261
|
-
/* @__PURE__ */
|
|
125286
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { children: totalReviewed }) })
|
|
125262
125287
|
] }),
|
|
125263
125288
|
/* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125264
|
-
/* @__PURE__ */
|
|
125289
|
+
/* @__PURE__ */ jsx54(
|
|
125265
125290
|
Box47,
|
|
125266
125291
|
{
|
|
125267
125292
|
width: TOOL_NAME_COL_WIDTH + CALLS_COL_WIDTH + SUCCESS_RATE_COL_WIDTH,
|
|
125268
|
-
children: /* @__PURE__ */
|
|
125293
|
+
children: /* @__PURE__ */ jsx54(Text53, { children: " \xBB Accepted:" })
|
|
125269
125294
|
}
|
|
125270
125295
|
),
|
|
125271
|
-
/* @__PURE__ */
|
|
125296
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { color: Colors.AccentGreen, children: totalDecisions.accept }) })
|
|
125272
125297
|
] }),
|
|
125273
125298
|
/* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125274
|
-
/* @__PURE__ */
|
|
125299
|
+
/* @__PURE__ */ jsx54(
|
|
125275
125300
|
Box47,
|
|
125276
125301
|
{
|
|
125277
125302
|
width: TOOL_NAME_COL_WIDTH + CALLS_COL_WIDTH + SUCCESS_RATE_COL_WIDTH,
|
|
125278
|
-
children: /* @__PURE__ */
|
|
125303
|
+
children: /* @__PURE__ */ jsx54(Text53, { children: " \xBB Rejected:" })
|
|
125279
125304
|
}
|
|
125280
125305
|
),
|
|
125281
|
-
/* @__PURE__ */
|
|
125306
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { color: Colors.AccentRed, children: totalDecisions.reject }) })
|
|
125282
125307
|
] }),
|
|
125283
125308
|
/* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125284
|
-
/* @__PURE__ */
|
|
125309
|
+
/* @__PURE__ */ jsx54(
|
|
125285
125310
|
Box47,
|
|
125286
125311
|
{
|
|
125287
125312
|
width: TOOL_NAME_COL_WIDTH + CALLS_COL_WIDTH + SUCCESS_RATE_COL_WIDTH,
|
|
125288
|
-
children: /* @__PURE__ */
|
|
125313
|
+
children: /* @__PURE__ */ jsx54(Text53, { children: " \xBB Modified:" })
|
|
125289
125314
|
}
|
|
125290
125315
|
),
|
|
125291
|
-
/* @__PURE__ */
|
|
125316
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { color: Colors.AccentYellow, children: totalDecisions.modify }) })
|
|
125292
125317
|
] }),
|
|
125293
|
-
/* @__PURE__ */
|
|
125318
|
+
/* @__PURE__ */ jsx54(
|
|
125294
125319
|
Box47,
|
|
125295
125320
|
{
|
|
125296
125321
|
borderStyle: "single",
|
|
@@ -125302,14 +125327,14 @@ var ToolStatsDisplay = () => {
|
|
|
125302
125327
|
}
|
|
125303
125328
|
),
|
|
125304
125329
|
/* @__PURE__ */ jsxs50(Box47, { children: [
|
|
125305
|
-
/* @__PURE__ */
|
|
125330
|
+
/* @__PURE__ */ jsx54(
|
|
125306
125331
|
Box47,
|
|
125307
125332
|
{
|
|
125308
125333
|
width: TOOL_NAME_COL_WIDTH + CALLS_COL_WIDTH + SUCCESS_RATE_COL_WIDTH,
|
|
125309
|
-
children: /* @__PURE__ */
|
|
125334
|
+
children: /* @__PURE__ */ jsx54(Text53, { children: " Overall Agreement Rate:" })
|
|
125310
125335
|
}
|
|
125311
125336
|
),
|
|
125312
|
-
/* @__PURE__ */
|
|
125337
|
+
/* @__PURE__ */ jsx54(Box47, { width: AVG_DURATION_COL_WIDTH, justifyContent: "flex-end", children: /* @__PURE__ */ jsx54(Text53, { bold: true, color: totalReviewed > 0 ? agreementColor : void 0, children: totalReviewed > 0 ? `${agreementRate.toFixed(1)}%` : "--" }) })
|
|
125313
125338
|
] })
|
|
125314
125339
|
]
|
|
125315
125340
|
}
|
|
@@ -125317,14 +125342,14 @@ var ToolStatsDisplay = () => {
|
|
|
125317
125342
|
};
|
|
125318
125343
|
|
|
125319
125344
|
// packages/cli/src/ui/components/SessionSummaryDisplay.tsx
|
|
125320
|
-
import { jsx as
|
|
125345
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
125321
125346
|
var SessionSummaryDisplay = ({
|
|
125322
125347
|
duration
|
|
125323
|
-
}) => /* @__PURE__ */
|
|
125348
|
+
}) => /* @__PURE__ */ jsx55(StatsDisplay, { title: "Agent powering down. Goodbye!", duration });
|
|
125324
125349
|
|
|
125325
125350
|
// packages/cli/src/ui/components/Help.tsx
|
|
125326
125351
|
import { Box as Box48, Text as Text54 } from "ink";
|
|
125327
|
-
import { jsx as
|
|
125352
|
+
import { jsx as jsx56, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
125328
125353
|
var Help = ({ commands }) => /* @__PURE__ */ jsxs51(
|
|
125329
125354
|
Box48,
|
|
125330
125355
|
{
|
|
@@ -125334,34 +125359,34 @@ var Help = ({ commands }) => /* @__PURE__ */ jsxs51(
|
|
|
125334
125359
|
borderStyle: "round",
|
|
125335
125360
|
padding: 1,
|
|
125336
125361
|
children: [
|
|
125337
|
-
/* @__PURE__ */
|
|
125362
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.Foreground, children: "Basics:" }),
|
|
125338
125363
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125339
|
-
/* @__PURE__ */
|
|
125364
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Add context" }),
|
|
125340
125365
|
": Use",
|
|
125341
125366
|
" ",
|
|
125342
|
-
/* @__PURE__ */
|
|
125367
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "@" }),
|
|
125343
125368
|
" ",
|
|
125344
125369
|
"to specify files for context (e.g.,",
|
|
125345
125370
|
" ",
|
|
125346
|
-
/* @__PURE__ */
|
|
125371
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "@src/myFile.ts" }),
|
|
125347
125372
|
") to target specific files or folders."
|
|
125348
125373
|
] }),
|
|
125349
125374
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125350
|
-
/* @__PURE__ */
|
|
125375
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Shell mode" }),
|
|
125351
125376
|
": Execute shell commands via",
|
|
125352
125377
|
" ",
|
|
125353
|
-
/* @__PURE__ */
|
|
125378
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "!" }),
|
|
125354
125379
|
" ",
|
|
125355
125380
|
"(e.g.,",
|
|
125356
125381
|
" ",
|
|
125357
|
-
/* @__PURE__ */
|
|
125382
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "!npm run start" }),
|
|
125358
125383
|
") or use natural language (e.g.",
|
|
125359
125384
|
" ",
|
|
125360
|
-
/* @__PURE__ */
|
|
125385
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "start server" }),
|
|
125361
125386
|
")."
|
|
125362
125387
|
] }),
|
|
125363
|
-
/* @__PURE__ */
|
|
125364
|
-
/* @__PURE__ */
|
|
125388
|
+
/* @__PURE__ */ jsx56(Box48, { height: 1 }),
|
|
125389
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.Foreground, children: "Commands:" }),
|
|
125365
125390
|
commands.filter((command) => command.description).map((command) => /* @__PURE__ */ jsxs51(Box48, { flexDirection: "column", children: [
|
|
125366
125391
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125367
125392
|
/* @__PURE__ */ jsxs51(Text54, { bold: true, color: Colors.AccentPurple, children: [
|
|
@@ -125387,70 +125412,70 @@ var Help = ({ commands }) => /* @__PURE__ */ jsxs51(
|
|
|
125387
125412
|
] }),
|
|
125388
125413
|
"- shell command"
|
|
125389
125414
|
] }),
|
|
125390
|
-
/* @__PURE__ */
|
|
125391
|
-
/* @__PURE__ */
|
|
125415
|
+
/* @__PURE__ */ jsx56(Box48, { height: 1 }),
|
|
125416
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.Foreground, children: "Keyboard Shortcuts:" }),
|
|
125392
125417
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125393
|
-
/* @__PURE__ */
|
|
125418
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Alt+Left/Right" }),
|
|
125394
125419
|
" ",
|
|
125395
125420
|
"- Jump through words in the input"
|
|
125396
125421
|
] }),
|
|
125397
125422
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125398
|
-
/* @__PURE__ */
|
|
125423
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Ctrl+C" }),
|
|
125399
125424
|
" ",
|
|
125400
125425
|
"- Quit application"
|
|
125401
125426
|
] }),
|
|
125402
125427
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125403
|
-
/* @__PURE__ */
|
|
125428
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: process.platform === "win32" ? "Ctrl+Enter" : "Ctrl+J" }),
|
|
125404
125429
|
" ",
|
|
125405
125430
|
process.platform === "linux" ? "- New line (Alt+Enter works for certain linux distros)" : "- New line"
|
|
125406
125431
|
] }),
|
|
125407
125432
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125408
|
-
/* @__PURE__ */
|
|
125433
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Ctrl+L" }),
|
|
125409
125434
|
" ",
|
|
125410
125435
|
"- Clear the screen"
|
|
125411
125436
|
] }),
|
|
125412
125437
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125413
|
-
/* @__PURE__ */
|
|
125438
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: process.platform === "darwin" ? "Ctrl+X / Meta+Enter" : "Ctrl+X" }),
|
|
125414
125439
|
" ",
|
|
125415
125440
|
"- Open input in external editor"
|
|
125416
125441
|
] }),
|
|
125417
125442
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125418
|
-
/* @__PURE__ */
|
|
125443
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Ctrl+Y" }),
|
|
125419
125444
|
" ",
|
|
125420
125445
|
"- Toggle YOLO mode"
|
|
125421
125446
|
] }),
|
|
125422
125447
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125423
|
-
/* @__PURE__ */
|
|
125448
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Enter" }),
|
|
125424
125449
|
" ",
|
|
125425
125450
|
"- Send message"
|
|
125426
125451
|
] }),
|
|
125427
125452
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125428
|
-
/* @__PURE__ */
|
|
125453
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Esc" }),
|
|
125429
125454
|
" ",
|
|
125430
125455
|
"- Cancel operation"
|
|
125431
125456
|
] }),
|
|
125432
125457
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125433
|
-
/* @__PURE__ */
|
|
125458
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Shift+Tab" }),
|
|
125434
125459
|
" ",
|
|
125435
125460
|
"- Toggle auto-accepting edits"
|
|
125436
125461
|
] }),
|
|
125437
125462
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125438
|
-
/* @__PURE__ */
|
|
125463
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "Up/Down" }),
|
|
125439
125464
|
" ",
|
|
125440
125465
|
"- Cycle through your prompt history"
|
|
125441
125466
|
] }),
|
|
125442
|
-
/* @__PURE__ */
|
|
125467
|
+
/* @__PURE__ */ jsx56(Box48, { height: 1 }),
|
|
125443
125468
|
/* @__PURE__ */ jsxs51(Text54, { color: Colors.Foreground, children: [
|
|
125444
125469
|
"For a full list of shortcuts, see",
|
|
125445
125470
|
" ",
|
|
125446
|
-
/* @__PURE__ */
|
|
125471
|
+
/* @__PURE__ */ jsx56(Text54, { bold: true, color: Colors.AccentPurple, children: "docs/keyboard-shortcuts.md" })
|
|
125447
125472
|
] })
|
|
125448
125473
|
]
|
|
125449
125474
|
}
|
|
125450
125475
|
);
|
|
125451
125476
|
|
|
125452
125477
|
// packages/cli/src/ui/components/HistoryItemDisplay.tsx
|
|
125453
|
-
import { jsx as
|
|
125478
|
+
import { jsx as jsx57, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
125454
125479
|
var HistoryItemDisplay = ({
|
|
125455
125480
|
item,
|
|
125456
125481
|
availableTerminalHeight,
|
|
@@ -125460,9 +125485,9 @@ var HistoryItemDisplay = ({
|
|
|
125460
125485
|
commands,
|
|
125461
125486
|
isFocused = true
|
|
125462
125487
|
}) => /* @__PURE__ */ jsxs52(Box49, { flexDirection: "column", children: [
|
|
125463
|
-
item.type === "user" && /* @__PURE__ */
|
|
125464
|
-
item.type === "user_shell" && /* @__PURE__ */
|
|
125465
|
-
item.type === "gemini" && /* @__PURE__ */
|
|
125488
|
+
item.type === "user" && /* @__PURE__ */ jsx57(UserMessage, { text: item.text }),
|
|
125489
|
+
item.type === "user_shell" && /* @__PURE__ */ jsx57(UserShellMessage, { text: item.text }),
|
|
125490
|
+
item.type === "gemini" && /* @__PURE__ */ jsx57(
|
|
125466
125491
|
GeminiMessage,
|
|
125467
125492
|
{
|
|
125468
125493
|
text: item.text,
|
|
@@ -125471,7 +125496,7 @@ var HistoryItemDisplay = ({
|
|
|
125471
125496
|
terminalWidth
|
|
125472
125497
|
}
|
|
125473
125498
|
),
|
|
125474
|
-
item.type === "gemini_content" && /* @__PURE__ */
|
|
125499
|
+
item.type === "gemini_content" && /* @__PURE__ */ jsx57(
|
|
125475
125500
|
GeminiMessageContent,
|
|
125476
125501
|
{
|
|
125477
125502
|
text: item.text,
|
|
@@ -125480,9 +125505,9 @@ var HistoryItemDisplay = ({
|
|
|
125480
125505
|
terminalWidth
|
|
125481
125506
|
}
|
|
125482
125507
|
),
|
|
125483
|
-
item.type === "info" && /* @__PURE__ */
|
|
125484
|
-
item.type === "error" && /* @__PURE__ */
|
|
125485
|
-
item.type === "about" && /* @__PURE__ */
|
|
125508
|
+
item.type === "info" && /* @__PURE__ */ jsx57(InfoMessage, { text: item.text }),
|
|
125509
|
+
item.type === "error" && /* @__PURE__ */ jsx57(ErrorMessage, { text: item.text }),
|
|
125510
|
+
item.type === "about" && /* @__PURE__ */ jsx57(
|
|
125486
125511
|
AboutBox,
|
|
125487
125512
|
{
|
|
125488
125513
|
cliVersion: item.cliVersion,
|
|
@@ -125494,12 +125519,12 @@ var HistoryItemDisplay = ({
|
|
|
125494
125519
|
ideClient: item.ideClient
|
|
125495
125520
|
}
|
|
125496
125521
|
),
|
|
125497
|
-
item.type === "help" && commands && /* @__PURE__ */
|
|
125498
|
-
item.type === "stats" && /* @__PURE__ */
|
|
125499
|
-
item.type === "model_stats" && /* @__PURE__ */
|
|
125500
|
-
item.type === "tool_stats" && /* @__PURE__ */
|
|
125501
|
-
item.type === "quit" && /* @__PURE__ */
|
|
125502
|
-
item.type === "tool_group" && /* @__PURE__ */
|
|
125522
|
+
item.type === "help" && commands && /* @__PURE__ */ jsx57(Help, { commands }),
|
|
125523
|
+
item.type === "stats" && /* @__PURE__ */ jsx57(StatsDisplay, { duration: item.duration }),
|
|
125524
|
+
item.type === "model_stats" && /* @__PURE__ */ jsx57(ModelStatsDisplay, {}),
|
|
125525
|
+
item.type === "tool_stats" && /* @__PURE__ */ jsx57(ToolStatsDisplay, {}),
|
|
125526
|
+
item.type === "quit" && /* @__PURE__ */ jsx57(SessionSummaryDisplay, { duration: item.duration }),
|
|
125527
|
+
item.type === "tool_group" && /* @__PURE__ */ jsx57(
|
|
125503
125528
|
ToolGroupMessage,
|
|
125504
125529
|
{
|
|
125505
125530
|
toolCalls: item.tools,
|
|
@@ -125510,12 +125535,12 @@ var HistoryItemDisplay = ({
|
|
|
125510
125535
|
isFocused
|
|
125511
125536
|
}
|
|
125512
125537
|
),
|
|
125513
|
-
item.type === "compression" && /* @__PURE__ */
|
|
125538
|
+
item.type === "compression" && /* @__PURE__ */ jsx57(CompressionMessage, { compression: item.compression })
|
|
125514
125539
|
] }, item.id);
|
|
125515
125540
|
|
|
125516
125541
|
// packages/cli/src/ui/components/ContextSummaryDisplay.tsx
|
|
125517
125542
|
import { Box as Box50, Text as Text55 } from "ink";
|
|
125518
|
-
import { jsx as
|
|
125543
|
+
import { jsx as jsx58, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
125519
125544
|
var ContextSummaryDisplay = ({
|
|
125520
125545
|
geminiMdFileCount,
|
|
125521
125546
|
contextFileNames,
|
|
@@ -125530,7 +125555,7 @@ var ContextSummaryDisplay = ({
|
|
|
125530
125555
|
const blockedMcpServerCount = blockedMcpServers?.length || 0;
|
|
125531
125556
|
const openFileCount = ideContext2?.workspaceState?.openFiles?.length ?? 0;
|
|
125532
125557
|
if (geminiMdFileCount === 0 && mcpServerCount === 0 && blockedMcpServerCount === 0 && openFileCount === 0) {
|
|
125533
|
-
return /* @__PURE__ */
|
|
125558
|
+
return /* @__PURE__ */ jsx58(Text55, { children: " " });
|
|
125534
125559
|
}
|
|
125535
125560
|
const openFilesText = (() => {
|
|
125536
125561
|
if (openFileCount === 0) {
|
|
@@ -125576,7 +125601,7 @@ var ContextSummaryDisplay = ({
|
|
|
125576
125601
|
const summaryParts = [openFilesText, geminiMdText, mcpText].filter(Boolean);
|
|
125577
125602
|
if (isNarrow) {
|
|
125578
125603
|
return /* @__PURE__ */ jsxs53(Box50, { flexDirection: "column", children: [
|
|
125579
|
-
/* @__PURE__ */
|
|
125604
|
+
/* @__PURE__ */ jsx58(Text55, { color: Colors.Gray, children: "Using:" }),
|
|
125580
125605
|
summaryParts.map((part, index) => /* @__PURE__ */ jsxs53(Text55, { color: Colors.Gray, children: [
|
|
125581
125606
|
" ",
|
|
125582
125607
|
"- ",
|
|
@@ -125584,7 +125609,7 @@ var ContextSummaryDisplay = ({
|
|
|
125584
125609
|
] }, index))
|
|
125585
125610
|
] });
|
|
125586
125611
|
}
|
|
125587
|
-
return /* @__PURE__ */
|
|
125612
|
+
return /* @__PURE__ */ jsx58(Box50, { children: /* @__PURE__ */ jsxs53(Text55, { color: Colors.Gray, children: [
|
|
125588
125613
|
"Using: ",
|
|
125589
125614
|
summaryParts.join(" | ")
|
|
125590
125615
|
] }) });
|
|
@@ -125653,7 +125678,7 @@ import process18 from "node:process";
|
|
|
125653
125678
|
// packages/cli/src/ui/IdeIntegrationNudge.tsx
|
|
125654
125679
|
init_dist2();
|
|
125655
125680
|
import { Box as Box51, Text as Text56 } from "ink";
|
|
125656
|
-
import { jsx as
|
|
125681
|
+
import { jsx as jsx59, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
125657
125682
|
function IdeIntegrationNudge({
|
|
125658
125683
|
ide,
|
|
125659
125684
|
onComplete
|
|
@@ -125707,12 +125732,12 @@ function IdeIntegrationNudge({
|
|
|
125707
125732
|
children: [
|
|
125708
125733
|
/* @__PURE__ */ jsxs54(Box51, { marginBottom: 1, flexDirection: "column", children: [
|
|
125709
125734
|
/* @__PURE__ */ jsxs54(Text56, { children: [
|
|
125710
|
-
/* @__PURE__ */
|
|
125735
|
+
/* @__PURE__ */ jsx59(Text56, { color: "yellow", children: "> " }),
|
|
125711
125736
|
`Do you want to connect ${ideName ?? "your"} editor to FSS Link?`
|
|
125712
125737
|
] }),
|
|
125713
|
-
/* @__PURE__ */
|
|
125738
|
+
/* @__PURE__ */ jsx59(Text56, { dimColor: true, children: installText })
|
|
125714
125739
|
] }),
|
|
125715
|
-
/* @__PURE__ */
|
|
125740
|
+
/* @__PURE__ */ jsx59(RadioButtonSelect, { items: OPTIONS, onSelect: onComplete })
|
|
125716
125741
|
]
|
|
125717
125742
|
}
|
|
125718
125743
|
);
|
|
@@ -125809,7 +125834,7 @@ import {
|
|
|
125809
125834
|
useEffect as useEffect40,
|
|
125810
125835
|
useState as useState43
|
|
125811
125836
|
} from "react";
|
|
125812
|
-
import { jsx as
|
|
125837
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
125813
125838
|
var VimModeContext = createContext5(void 0);
|
|
125814
125839
|
var VimModeProvider = ({
|
|
125815
125840
|
children,
|
|
@@ -125842,7 +125867,7 @@ var VimModeProvider = ({
|
|
|
125842
125867
|
toggleVimEnabled,
|
|
125843
125868
|
setVimMode
|
|
125844
125869
|
};
|
|
125845
|
-
return /* @__PURE__ */
|
|
125870
|
+
return /* @__PURE__ */ jsx60(VimModeContext.Provider, { value, children });
|
|
125846
125871
|
};
|
|
125847
125872
|
var useVimMode = () => {
|
|
125848
125873
|
const context = useContext5(VimModeContext);
|
|
@@ -126410,15 +126435,15 @@ import * as fs67 from "fs";
|
|
|
126410
126435
|
|
|
126411
126436
|
// packages/cli/src/ui/components/UpdateNotification.tsx
|
|
126412
126437
|
import { Box as Box52, Text as Text57 } from "ink";
|
|
126413
|
-
import { jsx as
|
|
126414
|
-
var UpdateNotification = ({ message }) => /* @__PURE__ */
|
|
126438
|
+
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
126439
|
+
var UpdateNotification = ({ message }) => /* @__PURE__ */ jsx61(
|
|
126415
126440
|
Box52,
|
|
126416
126441
|
{
|
|
126417
126442
|
borderStyle: "round",
|
|
126418
126443
|
borderColor: Colors.AccentYellow,
|
|
126419
126444
|
paddingX: 1,
|
|
126420
126445
|
marginY: 1,
|
|
126421
|
-
children: /* @__PURE__ */
|
|
126446
|
+
children: /* @__PURE__ */ jsx61(Text57, { color: Colors.AccentYellow, children: message })
|
|
126422
126447
|
}
|
|
126423
126448
|
);
|
|
126424
126449
|
|
|
@@ -126603,14 +126628,14 @@ init_SearchEngineConfigProvider();
|
|
|
126603
126628
|
|
|
126604
126629
|
// packages/cli/src/ui/components/ShowMoreLines.tsx
|
|
126605
126630
|
import { Box as Box53, Text as Text58 } from "ink";
|
|
126606
|
-
import { jsx as
|
|
126631
|
+
import { jsx as jsx62 } from "react/jsx-runtime";
|
|
126607
126632
|
var ShowMoreLines = ({ constrainHeight }) => {
|
|
126608
126633
|
const overflowState = useOverflowState();
|
|
126609
126634
|
const streamingState = useStreamingContext();
|
|
126610
126635
|
if (overflowState === void 0 || overflowState.overflowingIds.size === 0 || !constrainHeight || !(streamingState === "idle" /* Idle */ || streamingState === "waiting_for_confirmation" /* WaitingForConfirmation */)) {
|
|
126611
126636
|
return null;
|
|
126612
126637
|
}
|
|
126613
|
-
return /* @__PURE__ */
|
|
126638
|
+
return /* @__PURE__ */ jsx62(Box53, { children: /* @__PURE__ */ jsx62(Text58, { color: Colors.Gray, wrap: "truncate", children: "Press ctrl-s to show more lines" }) });
|
|
126614
126639
|
};
|
|
126615
126640
|
|
|
126616
126641
|
// packages/cli/src/ui/privacy/PrivacyNotice.tsx
|
|
@@ -126619,7 +126644,7 @@ import { Box as Box57 } from "ink";
|
|
|
126619
126644
|
|
|
126620
126645
|
// packages/cli/src/ui/privacy/GeminiPrivacyNotice.tsx
|
|
126621
126646
|
import { Box as Box54, Newline, Text as Text59 } from "ink";
|
|
126622
|
-
import { jsx as
|
|
126647
|
+
import { jsx as jsx63, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
126623
126648
|
var GeminiPrivacyNotice = ({ onExit }) => {
|
|
126624
126649
|
useKeypress(
|
|
126625
126650
|
(key) => {
|
|
@@ -126630,47 +126655,47 @@ var GeminiPrivacyNotice = ({ onExit }) => {
|
|
|
126630
126655
|
{ isActive: true }
|
|
126631
126656
|
);
|
|
126632
126657
|
return /* @__PURE__ */ jsxs55(Box54, { flexDirection: "column", marginBottom: 1, children: [
|
|
126633
|
-
/* @__PURE__ */
|
|
126634
|
-
/* @__PURE__ */
|
|
126658
|
+
/* @__PURE__ */ jsx63(Text59, { bold: true, color: Colors.AccentPurple, children: "Gemini API Key Notice" }),
|
|
126659
|
+
/* @__PURE__ */ jsx63(Newline, {}),
|
|
126635
126660
|
/* @__PURE__ */ jsxs55(Text59, { children: [
|
|
126636
126661
|
"By using the Gemini API",
|
|
126637
|
-
/* @__PURE__ */
|
|
126662
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentBlue, children: "[1]" }),
|
|
126638
126663
|
", Google AI Studio",
|
|
126639
|
-
/* @__PURE__ */
|
|
126664
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentRed, children: "[2]" }),
|
|
126640
126665
|
', and the other Google developer services that reference these terms (collectively, the "APIs" or "Services"), you are agreeing to Google APIs Terms of Service (the "API Terms")',
|
|
126641
|
-
/* @__PURE__ */
|
|
126666
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentGreen, children: "[3]" }),
|
|
126642
126667
|
', and the Gemini API Additional Terms of Service (the "Additional Terms")',
|
|
126643
|
-
/* @__PURE__ */
|
|
126668
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentPurple, children: "[4]" }),
|
|
126644
126669
|
"."
|
|
126645
126670
|
] }),
|
|
126646
|
-
/* @__PURE__ */
|
|
126671
|
+
/* @__PURE__ */ jsx63(Newline, {}),
|
|
126647
126672
|
/* @__PURE__ */ jsxs55(Text59, { children: [
|
|
126648
|
-
/* @__PURE__ */
|
|
126673
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentBlue, children: "[1]" }),
|
|
126649
126674
|
" ",
|
|
126650
126675
|
"https://ai.google.dev/docs/gemini_api_overview"
|
|
126651
126676
|
] }),
|
|
126652
126677
|
/* @__PURE__ */ jsxs55(Text59, { children: [
|
|
126653
|
-
/* @__PURE__ */
|
|
126678
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentRed, children: "[2]" }),
|
|
126654
126679
|
" https://aistudio.google.com/"
|
|
126655
126680
|
] }),
|
|
126656
126681
|
/* @__PURE__ */ jsxs55(Text59, { children: [
|
|
126657
|
-
/* @__PURE__ */
|
|
126682
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentGreen, children: "[3]" }),
|
|
126658
126683
|
" ",
|
|
126659
126684
|
"https://developers.google.com/terms"
|
|
126660
126685
|
] }),
|
|
126661
126686
|
/* @__PURE__ */ jsxs55(Text59, { children: [
|
|
126662
|
-
/* @__PURE__ */
|
|
126687
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.AccentPurple, children: "[4]" }),
|
|
126663
126688
|
" ",
|
|
126664
126689
|
"https://ai.google.dev/gemini-api/terms"
|
|
126665
126690
|
] }),
|
|
126666
|
-
/* @__PURE__ */
|
|
126667
|
-
/* @__PURE__ */
|
|
126691
|
+
/* @__PURE__ */ jsx63(Newline, {}),
|
|
126692
|
+
/* @__PURE__ */ jsx63(Text59, { color: Colors.Gray, children: "Press Esc to exit." })
|
|
126668
126693
|
] });
|
|
126669
126694
|
};
|
|
126670
126695
|
|
|
126671
126696
|
// packages/cli/src/ui/privacy/CloudPaidPrivacyNotice.tsx
|
|
126672
126697
|
import { Box as Box55, Newline as Newline2, Text as Text60 } from "ink";
|
|
126673
|
-
import { jsx as
|
|
126698
|
+
import { jsx as jsx64, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
126674
126699
|
var CloudPaidPrivacyNotice = ({
|
|
126675
126700
|
onExit
|
|
126676
126701
|
}) => {
|
|
@@ -126683,28 +126708,28 @@ var CloudPaidPrivacyNotice = ({
|
|
|
126683
126708
|
{ isActive: true }
|
|
126684
126709
|
);
|
|
126685
126710
|
return /* @__PURE__ */ jsxs56(Box55, { flexDirection: "column", marginBottom: 1, children: [
|
|
126686
|
-
/* @__PURE__ */
|
|
126687
|
-
/* @__PURE__ */
|
|
126711
|
+
/* @__PURE__ */ jsx64(Text60, { bold: true, color: Colors.AccentPurple, children: "Vertex AI Notice" }),
|
|
126712
|
+
/* @__PURE__ */ jsx64(Newline2, {}),
|
|
126688
126713
|
/* @__PURE__ */ jsxs56(Text60, { children: [
|
|
126689
126714
|
"Service Specific Terms",
|
|
126690
|
-
/* @__PURE__ */
|
|
126715
|
+
/* @__PURE__ */ jsx64(Text60, { color: Colors.AccentBlue, children: "[1]" }),
|
|
126691
126716
|
" are incorporated into the agreement under which Google has agreed to provide Google Cloud Platform",
|
|
126692
|
-
/* @__PURE__ */
|
|
126717
|
+
/* @__PURE__ */ jsx64(Text60, { color: Colors.AccentGreen, children: "[2]" }),
|
|
126693
126718
|
" to Customer (the \u201CAgreement\u201D). If the Agreement authorizes the resale or supply of Google Cloud Platform under a Google Cloud partner or reseller program, then except for in the section entitled \u201CPartner-Specific Terms\u201D, all references to Customer in the Service Specific Terms mean Partner or Reseller (as applicable), and all references to Customer Data in the Service Specific Terms mean Partner Data. Capitalized terms used but not defined in the Service Specific Terms have the meaning given to them in the Agreement."
|
|
126694
126719
|
] }),
|
|
126695
|
-
/* @__PURE__ */
|
|
126720
|
+
/* @__PURE__ */ jsx64(Newline2, {}),
|
|
126696
126721
|
/* @__PURE__ */ jsxs56(Text60, { children: [
|
|
126697
|
-
/* @__PURE__ */
|
|
126722
|
+
/* @__PURE__ */ jsx64(Text60, { color: Colors.AccentBlue, children: "[1]" }),
|
|
126698
126723
|
" ",
|
|
126699
126724
|
"https://cloud.google.com/terms/service-terms"
|
|
126700
126725
|
] }),
|
|
126701
126726
|
/* @__PURE__ */ jsxs56(Text60, { children: [
|
|
126702
|
-
/* @__PURE__ */
|
|
126727
|
+
/* @__PURE__ */ jsx64(Text60, { color: Colors.AccentGreen, children: "[2]" }),
|
|
126703
126728
|
" ",
|
|
126704
126729
|
"https://cloud.google.com/terms/services"
|
|
126705
126730
|
] }),
|
|
126706
|
-
/* @__PURE__ */
|
|
126707
|
-
/* @__PURE__ */
|
|
126731
|
+
/* @__PURE__ */ jsx64(Newline2, {}),
|
|
126732
|
+
/* @__PURE__ */ jsx64(Text60, { color: Colors.Gray, children: "Press Esc to exit." })
|
|
126708
126733
|
] });
|
|
126709
126734
|
};
|
|
126710
126735
|
|
|
@@ -126822,7 +126847,7 @@ async function setRemoteDataCollectionOptIn(server, optIn) {
|
|
|
126822
126847
|
}
|
|
126823
126848
|
|
|
126824
126849
|
// packages/cli/src/ui/privacy/CloudFreePrivacyNotice.tsx
|
|
126825
|
-
import { jsx as
|
|
126850
|
+
import { jsx as jsx65, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
126826
126851
|
var CloudFreePrivacyNotice = ({
|
|
126827
126852
|
config,
|
|
126828
126853
|
onExit
|
|
@@ -126837,7 +126862,7 @@ var CloudFreePrivacyNotice = ({
|
|
|
126837
126862
|
{ isActive: true }
|
|
126838
126863
|
);
|
|
126839
126864
|
if (privacyState.isLoading) {
|
|
126840
|
-
return /* @__PURE__ */
|
|
126865
|
+
return /* @__PURE__ */ jsx65(Text61, { color: Colors.Gray, children: "Loading..." });
|
|
126841
126866
|
}
|
|
126842
126867
|
if (privacyState.error) {
|
|
126843
126868
|
return /* @__PURE__ */ jsxs57(Box56, { flexDirection: "column", marginY: 1, children: [
|
|
@@ -126845,32 +126870,32 @@ var CloudFreePrivacyNotice = ({
|
|
|
126845
126870
|
"Error loading Opt-in settings: ",
|
|
126846
126871
|
privacyState.error
|
|
126847
126872
|
] }),
|
|
126848
|
-
/* @__PURE__ */
|
|
126873
|
+
/* @__PURE__ */ jsx65(Text61, { color: Colors.Gray, children: "Press Esc to exit." })
|
|
126849
126874
|
] });
|
|
126850
126875
|
}
|
|
126851
126876
|
if (privacyState.isFreeTier === false) {
|
|
126852
|
-
return /* @__PURE__ */
|
|
126877
|
+
return /* @__PURE__ */ jsx65(CloudPaidPrivacyNotice, { onExit });
|
|
126853
126878
|
}
|
|
126854
126879
|
const items = [
|
|
126855
126880
|
{ label: "Yes", value: true },
|
|
126856
126881
|
{ label: "No", value: false }
|
|
126857
126882
|
];
|
|
126858
126883
|
return /* @__PURE__ */ jsxs57(Box56, { flexDirection: "column", marginY: 1, children: [
|
|
126859
|
-
/* @__PURE__ */
|
|
126860
|
-
/* @__PURE__ */
|
|
126884
|
+
/* @__PURE__ */ jsx65(Text61, { bold: true, color: Colors.AccentPurple, children: "Gemini Code Assist for Individuals Privacy Notice" }),
|
|
126885
|
+
/* @__PURE__ */ jsx65(Newline3, {}),
|
|
126861
126886
|
/* @__PURE__ */ jsxs57(Text61, { children: [
|
|
126862
126887
|
"This notice and our Privacy Policy",
|
|
126863
|
-
/* @__PURE__ */
|
|
126888
|
+
/* @__PURE__ */ jsx65(Text61, { color: Colors.AccentBlue, children: "[1]" }),
|
|
126864
126889
|
" describe how Gemini Code Assist handles your data. Please read them carefully."
|
|
126865
126890
|
] }),
|
|
126866
|
-
/* @__PURE__ */
|
|
126867
|
-
/* @__PURE__ */
|
|
126868
|
-
/* @__PURE__ */
|
|
126869
|
-
/* @__PURE__ */
|
|
126870
|
-
/* @__PURE__ */
|
|
126891
|
+
/* @__PURE__ */ jsx65(Newline3, {}),
|
|
126892
|
+
/* @__PURE__ */ jsx65(Text61, { children: "When you use Gemini Code Assist for individuals with Gemini CLI, Google collects your prompts, related code, generated output, code edits, related feature usage information, and your feedback to provide, improve, and develop Google products and services and machine learning technologies." }),
|
|
126893
|
+
/* @__PURE__ */ jsx65(Newline3, {}),
|
|
126894
|
+
/* @__PURE__ */ jsx65(Text61, { children: "To help with quality and improve our products (such as generative machine-learning models), human reviewers may read, annotate, and process the data collected above. We take steps to protect your privacy as part of this process. This includes disconnecting the data from your Google Account before reviewers see or annotate it, and storing those disconnected copies for up to 18 months. Please don't submit confidential information or any data you wouldn't want a reviewer to see or Google to use to improve our products, services and machine-learning technologies." }),
|
|
126895
|
+
/* @__PURE__ */ jsx65(Newline3, {}),
|
|
126871
126896
|
/* @__PURE__ */ jsxs57(Box56, { flexDirection: "column", children: [
|
|
126872
|
-
/* @__PURE__ */
|
|
126873
|
-
/* @__PURE__ */
|
|
126897
|
+
/* @__PURE__ */ jsx65(Text61, { children: "Allow Google to use this data to develop and improve our products?" }),
|
|
126898
|
+
/* @__PURE__ */ jsx65(
|
|
126874
126899
|
RadioButtonSelect,
|
|
126875
126900
|
{
|
|
126876
126901
|
items,
|
|
@@ -126884,19 +126909,19 @@ var CloudFreePrivacyNotice = ({
|
|
|
126884
126909
|
}
|
|
126885
126910
|
)
|
|
126886
126911
|
] }),
|
|
126887
|
-
/* @__PURE__ */
|
|
126912
|
+
/* @__PURE__ */ jsx65(Newline3, {}),
|
|
126888
126913
|
/* @__PURE__ */ jsxs57(Text61, { children: [
|
|
126889
|
-
/* @__PURE__ */
|
|
126914
|
+
/* @__PURE__ */ jsx65(Text61, { color: Colors.AccentBlue, children: "[1]" }),
|
|
126890
126915
|
" ",
|
|
126891
126916
|
"https://policies.google.com/privacy"
|
|
126892
126917
|
] }),
|
|
126893
|
-
/* @__PURE__ */
|
|
126894
|
-
/* @__PURE__ */
|
|
126918
|
+
/* @__PURE__ */ jsx65(Newline3, {}),
|
|
126919
|
+
/* @__PURE__ */ jsx65(Text61, { color: Colors.Gray, children: "Press Enter to choose an option and exit." })
|
|
126895
126920
|
] });
|
|
126896
126921
|
};
|
|
126897
126922
|
|
|
126898
126923
|
// packages/cli/src/ui/privacy/PrivacyNotice.tsx
|
|
126899
|
-
import { jsx as
|
|
126924
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
126900
126925
|
var PrivacyNoticeText = ({
|
|
126901
126926
|
config,
|
|
126902
126927
|
onExit
|
|
@@ -126904,15 +126929,15 @@ var PrivacyNoticeText = ({
|
|
|
126904
126929
|
const authType = config.getContentGeneratorConfig()?.authType;
|
|
126905
126930
|
switch (authType) {
|
|
126906
126931
|
case AuthType.USE_GEMINI:
|
|
126907
|
-
return /* @__PURE__ */
|
|
126932
|
+
return /* @__PURE__ */ jsx66(GeminiPrivacyNotice, { onExit });
|
|
126908
126933
|
case AuthType.USE_VERTEX_AI:
|
|
126909
|
-
return /* @__PURE__ */
|
|
126934
|
+
return /* @__PURE__ */ jsx66(CloudPaidPrivacyNotice, { onExit });
|
|
126910
126935
|
case AuthType.LOGIN_WITH_GOOGLE:
|
|
126911
126936
|
default:
|
|
126912
|
-
return /* @__PURE__ */
|
|
126937
|
+
return /* @__PURE__ */ jsx66(CloudFreePrivacyNotice, { config, onExit });
|
|
126913
126938
|
}
|
|
126914
126939
|
};
|
|
126915
|
-
var PrivacyNotice = ({ onExit, config }) => /* @__PURE__ */
|
|
126940
|
+
var PrivacyNotice = ({ onExit, config }) => /* @__PURE__ */ jsx66(Box57, { borderStyle: "round", padding: 1, flexDirection: "column", children: /* @__PURE__ */ jsx66(PrivacyNoticeText, { config, onExit }) });
|
|
126916
126941
|
|
|
126917
126942
|
// packages/cli/src/ui/hooks/useSettingsCommand.ts
|
|
126918
126943
|
import { useState as useState46, useCallback as useCallback28 } from "react";
|
|
@@ -126936,7 +126961,7 @@ import React30, { useState as useState47, useEffect as useEffect43 } from "react
|
|
|
126936
126961
|
import { Box as Box58, Text as Text62 } from "ink";
|
|
126937
126962
|
init_settings();
|
|
126938
126963
|
import chalk2 from "chalk";
|
|
126939
|
-
import { jsx as
|
|
126964
|
+
import { jsx as jsx67, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
126940
126965
|
var maxItemsToShow = 8;
|
|
126941
126966
|
function SettingsDialog({
|
|
126942
126967
|
settings,
|
|
@@ -127372,7 +127397,7 @@ function SettingsDialog({
|
|
|
127372
127397
|
},
|
|
127373
127398
|
{ isActive: true }
|
|
127374
127399
|
);
|
|
127375
|
-
return /* @__PURE__ */
|
|
127400
|
+
return /* @__PURE__ */ jsx67(
|
|
127376
127401
|
Box58,
|
|
127377
127402
|
{
|
|
127378
127403
|
borderStyle: "round",
|
|
@@ -127382,9 +127407,9 @@ function SettingsDialog({
|
|
|
127382
127407
|
width: "100%",
|
|
127383
127408
|
height: "100%",
|
|
127384
127409
|
children: /* @__PURE__ */ jsxs58(Box58, { flexDirection: "column", flexGrow: 1, children: [
|
|
127385
|
-
/* @__PURE__ */
|
|
127386
|
-
/* @__PURE__ */
|
|
127387
|
-
showScrollUp && /* @__PURE__ */
|
|
127410
|
+
/* @__PURE__ */ jsx67(Text62, { bold: true, color: Colors.AccentBlue, children: "Settings" }),
|
|
127411
|
+
/* @__PURE__ */ jsx67(Box58, { height: 1 }),
|
|
127412
|
+
showScrollUp && /* @__PURE__ */ jsx67(Text62, { color: Colors.Gray, children: "\u25B2" }),
|
|
127388
127413
|
visibleItems.map((item, idx) => {
|
|
127389
127414
|
const isActive = focusSection === "settings" && activeSettingIndex === idx + scrollOffset;
|
|
127390
127415
|
const scopeSettings = settings.forScope(selectedScope).settings;
|
|
@@ -127437,8 +127462,8 @@ function SettingsDialog({
|
|
|
127437
127462
|
);
|
|
127438
127463
|
return /* @__PURE__ */ jsxs58(React30.Fragment, { children: [
|
|
127439
127464
|
/* @__PURE__ */ jsxs58(Box58, { flexDirection: "row", alignItems: "center", children: [
|
|
127440
|
-
/* @__PURE__ */
|
|
127441
|
-
/* @__PURE__ */
|
|
127465
|
+
/* @__PURE__ */ jsx67(Box58, { minWidth: 2, flexShrink: 0, children: /* @__PURE__ */ jsx67(Text62, { color: isActive ? Colors.AccentGreen : Colors.Gray, children: isActive ? "\u25CF" : "" }) }),
|
|
127466
|
+
/* @__PURE__ */ jsx67(Box58, { minWidth: 50, children: /* @__PURE__ */ jsxs58(
|
|
127442
127467
|
Text62,
|
|
127443
127468
|
{
|
|
127444
127469
|
color: isActive ? Colors.AccentGreen : Colors.Foreground,
|
|
@@ -127451,8 +127476,8 @@ function SettingsDialog({
|
|
|
127451
127476
|
]
|
|
127452
127477
|
}
|
|
127453
127478
|
) }),
|
|
127454
|
-
/* @__PURE__ */
|
|
127455
|
-
/* @__PURE__ */
|
|
127479
|
+
/* @__PURE__ */ jsx67(Box58, { minWidth: 3 }),
|
|
127480
|
+
/* @__PURE__ */ jsx67(
|
|
127456
127481
|
Text62,
|
|
127457
127482
|
{
|
|
127458
127483
|
color: isActive ? Colors.AccentGreen : shouldBeGreyedOut ? Colors.Gray : Colors.Foreground,
|
|
@@ -127460,17 +127485,17 @@ function SettingsDialog({
|
|
|
127460
127485
|
}
|
|
127461
127486
|
)
|
|
127462
127487
|
] }),
|
|
127463
|
-
/* @__PURE__ */
|
|
127488
|
+
/* @__PURE__ */ jsx67(Box58, { height: 1 })
|
|
127464
127489
|
] }, item.value);
|
|
127465
127490
|
}),
|
|
127466
|
-
showScrollDown && /* @__PURE__ */
|
|
127467
|
-
/* @__PURE__ */
|
|
127491
|
+
showScrollDown && /* @__PURE__ */ jsx67(Text62, { color: Colors.Gray, children: "\u25BC" }),
|
|
127492
|
+
/* @__PURE__ */ jsx67(Box58, { height: 1 }),
|
|
127468
127493
|
/* @__PURE__ */ jsxs58(Box58, { marginTop: 1, flexDirection: "column", children: [
|
|
127469
127494
|
/* @__PURE__ */ jsxs58(Text62, { bold: focusSection === "scope", wrap: "truncate", children: [
|
|
127470
127495
|
focusSection === "scope" ? "> " : " ",
|
|
127471
127496
|
"Apply To"
|
|
127472
127497
|
] }),
|
|
127473
|
-
/* @__PURE__ */
|
|
127498
|
+
/* @__PURE__ */ jsx67(
|
|
127474
127499
|
RadioButtonSelect,
|
|
127475
127500
|
{
|
|
127476
127501
|
items: scopeItems,
|
|
@@ -127482,9 +127507,9 @@ function SettingsDialog({
|
|
|
127482
127507
|
}
|
|
127483
127508
|
)
|
|
127484
127509
|
] }),
|
|
127485
|
-
/* @__PURE__ */
|
|
127486
|
-
/* @__PURE__ */
|
|
127487
|
-
showRestartPrompt && /* @__PURE__ */
|
|
127510
|
+
/* @__PURE__ */ jsx67(Box58, { height: 1 }),
|
|
127511
|
+
/* @__PURE__ */ jsx67(Text62, { color: Colors.Gray, children: "(Use Enter to select, Tab to change focus)" }),
|
|
127512
|
+
showRestartPrompt && /* @__PURE__ */ jsx67(Text62, { color: Colors.AccentYellow, children: "To see changes, Gemini CLI must be restarted. Press r to exit and apply changes now." })
|
|
127488
127513
|
] })
|
|
127489
127514
|
}
|
|
127490
127515
|
);
|
|
@@ -127755,17 +127780,17 @@ import { EventEmitter as EventEmitter5 } from "events";
|
|
|
127755
127780
|
var appEvents = new EventEmitter5();
|
|
127756
127781
|
|
|
127757
127782
|
// packages/cli/src/ui/App.tsx
|
|
127758
|
-
import { Fragment as Fragment8, jsx as
|
|
127783
|
+
import { Fragment as Fragment8, jsx as jsx68, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
127759
127784
|
var CTRL_EXIT_PROMPT_DURATION_MS = 1e3;
|
|
127760
127785
|
var MAX_DISPLAYED_QUEUED_MESSAGES = 3;
|
|
127761
127786
|
var AppWrapper = (props) => {
|
|
127762
127787
|
const kittyProtocolStatus = useKittyKeyboardProtocol();
|
|
127763
|
-
return /* @__PURE__ */
|
|
127788
|
+
return /* @__PURE__ */ jsx68(
|
|
127764
127789
|
KeypressProvider,
|
|
127765
127790
|
{
|
|
127766
127791
|
kittyProtocolEnabled: kittyProtocolStatus.enabled,
|
|
127767
127792
|
config: props.config,
|
|
127768
|
-
children: /* @__PURE__ */
|
|
127793
|
+
children: /* @__PURE__ */ jsx68(SessionStatsProvider, { children: /* @__PURE__ */ jsx68(VimModeProvider, { settings: props.settings, children: /* @__PURE__ */ jsx68(App, { ...props }) }) })
|
|
127769
127794
|
}
|
|
127770
127795
|
);
|
|
127771
127796
|
};
|
|
@@ -128402,7 +128427,7 @@ ${queuedText}` : queuedText;
|
|
|
128402
128427
|
geminiClient
|
|
128403
128428
|
]);
|
|
128404
128429
|
if (quittingMessages) {
|
|
128405
|
-
return /* @__PURE__ */
|
|
128430
|
+
return /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", marginBottom: 1, children: quittingMessages.map((item) => /* @__PURE__ */ jsx68(
|
|
128406
128431
|
HistoryItemDisplay,
|
|
128407
128432
|
{
|
|
128408
128433
|
availableTerminalHeight: constrainHeight ? availableTerminalHeight : void 0,
|
|
@@ -128418,16 +128443,16 @@ ${queuedText}` : queuedText;
|
|
|
128418
128443
|
const debugConsoleMaxHeight = Math.floor(Math.max(terminalHeight * 0.2, 5));
|
|
128419
128444
|
const staticAreaMaxItemHeight = Math.max(terminalHeight * 4, 100);
|
|
128420
128445
|
const placeholder = vimModeEnabled ? " Press 'i' for INSERT mode and 'Esc' for NORMAL mode." : " Type your message or @path/to/file";
|
|
128421
|
-
return /* @__PURE__ */
|
|
128422
|
-
/* @__PURE__ */
|
|
128446
|
+
return /* @__PURE__ */ jsx68(StreamingContext.Provider, { value: streamingState, children: /* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", width: "90%", children: [
|
|
128447
|
+
/* @__PURE__ */ jsx68(
|
|
128423
128448
|
Static,
|
|
128424
128449
|
{
|
|
128425
128450
|
items: [
|
|
128426
128451
|
/* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", children: [
|
|
128427
|
-
!settings.merged.hideBanner && /* @__PURE__ */
|
|
128428
|
-
!settings.merged.hideTips && /* @__PURE__ */
|
|
128452
|
+
!settings.merged.hideBanner && /* @__PURE__ */ jsx68(Header, { version, nightly }),
|
|
128453
|
+
!settings.merged.hideTips && /* @__PURE__ */ jsx68(Tips, { config })
|
|
128429
128454
|
] }, "header"),
|
|
128430
|
-
...history.map((h) => /* @__PURE__ */
|
|
128455
|
+
...history.map((h) => /* @__PURE__ */ jsx68(
|
|
128431
128456
|
HistoryItemDisplay,
|
|
128432
128457
|
{
|
|
128433
128458
|
terminalWidth: mainAreaWidth,
|
|
@@ -128444,8 +128469,8 @@ ${queuedText}` : queuedText;
|
|
|
128444
128469
|
},
|
|
128445
128470
|
staticKey
|
|
128446
128471
|
),
|
|
128447
|
-
/* @__PURE__ */
|
|
128448
|
-
pendingHistoryItems.map((item, i) => /* @__PURE__ */
|
|
128472
|
+
/* @__PURE__ */ jsx68(OverflowProvider, { children: /* @__PURE__ */ jsxs59(Box59, { ref: pendingHistoryItemRef, flexDirection: "column", children: [
|
|
128473
|
+
pendingHistoryItems.map((item, i) => /* @__PURE__ */ jsx68(
|
|
128449
128474
|
HistoryItemDisplay,
|
|
128450
128475
|
{
|
|
128451
128476
|
availableTerminalHeight: constrainHeight ? availableTerminalHeight : void 0,
|
|
@@ -128457,11 +128482,11 @@ ${queuedText}` : queuedText;
|
|
|
128457
128482
|
},
|
|
128458
128483
|
i
|
|
128459
128484
|
)),
|
|
128460
|
-
/* @__PURE__ */
|
|
128485
|
+
/* @__PURE__ */ jsx68(ShowMoreLines, { constrainHeight })
|
|
128461
128486
|
] }) }),
|
|
128462
128487
|
/* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", ref: mainControlsRef, children: [
|
|
128463
|
-
updateInfo && /* @__PURE__ */
|
|
128464
|
-
startupWarnings.length > 0 && /* @__PURE__ */
|
|
128488
|
+
updateInfo && /* @__PURE__ */ jsx68(UpdateNotification, { message: updateInfo.message }),
|
|
128489
|
+
startupWarnings.length > 0 && /* @__PURE__ */ jsx68(
|
|
128465
128490
|
Box59,
|
|
128466
128491
|
{
|
|
128467
128492
|
borderStyle: "round",
|
|
@@ -128469,18 +128494,18 @@ ${queuedText}` : queuedText;
|
|
|
128469
128494
|
paddingX: 1,
|
|
128470
128495
|
marginY: 1,
|
|
128471
128496
|
flexDirection: "column",
|
|
128472
|
-
children: startupWarnings.map((warning, index) => /* @__PURE__ */
|
|
128497
|
+
children: startupWarnings.map((warning, index) => /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentYellow, children: warning }, index))
|
|
128473
128498
|
}
|
|
128474
128499
|
),
|
|
128475
|
-
shouldShowIdePrompt && currentIDE ? /* @__PURE__ */
|
|
128500
|
+
shouldShowIdePrompt && currentIDE ? /* @__PURE__ */ jsx68(
|
|
128476
128501
|
IdeIntegrationNudge,
|
|
128477
128502
|
{
|
|
128478
128503
|
ide: currentIDE,
|
|
128479
128504
|
onComplete: handleIdePromptComplete
|
|
128480
128505
|
}
|
|
128481
|
-
) : isFolderTrustDialogOpen ? /* @__PURE__ */
|
|
128506
|
+
) : isFolderTrustDialogOpen ? /* @__PURE__ */ jsx68(FolderTrustDialog, { onSelect: handleFolderTrustSelect }) : shellConfirmationRequest ? /* @__PURE__ */ jsx68(ShellConfirmationDialog, { request: shellConfirmationRequest }) : confirmationRequest ? /* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", children: [
|
|
128482
128507
|
confirmationRequest.prompt,
|
|
128483
|
-
/* @__PURE__ */
|
|
128508
|
+
/* @__PURE__ */ jsx68(Box59, { paddingY: 1, children: /* @__PURE__ */ jsx68(
|
|
128484
128509
|
RadioButtonSelect,
|
|
128485
128510
|
{
|
|
128486
128511
|
isFocused: !!confirmationRequest,
|
|
@@ -128494,8 +128519,8 @@ ${queuedText}` : queuedText;
|
|
|
128494
128519
|
}
|
|
128495
128520
|
) })
|
|
128496
128521
|
] }) : isThemeDialogOpen ? /* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", children: [
|
|
128497
|
-
themeError && /* @__PURE__ */
|
|
128498
|
-
/* @__PURE__ */
|
|
128522
|
+
themeError && /* @__PURE__ */ jsx68(Box59, { marginBottom: 1, children: /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentRed, children: themeError }) }),
|
|
128523
|
+
/* @__PURE__ */ jsx68(
|
|
128499
128524
|
ThemeDialog,
|
|
128500
128525
|
{
|
|
128501
128526
|
onSelect: handleThemeSelect,
|
|
@@ -128505,7 +128530,7 @@ ${queuedText}` : queuedText;
|
|
|
128505
128530
|
terminalWidth: mainAreaWidth
|
|
128506
128531
|
}
|
|
128507
128532
|
)
|
|
128508
|
-
] }) : isSettingsDialogOpen ? /* @__PURE__ */
|
|
128533
|
+
] }) : isSettingsDialogOpen ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128509
128534
|
SettingsDialog,
|
|
128510
128535
|
{
|
|
128511
128536
|
settings,
|
|
@@ -128513,7 +128538,7 @@ ${queuedText}` : queuedText;
|
|
|
128513
128538
|
onRestartRequest: () => process18.exit(0)
|
|
128514
128539
|
}
|
|
128515
128540
|
) }) : isAuthenticating ? /* @__PURE__ */ jsxs59(Fragment8, { children: [
|
|
128516
|
-
/* @__PURE__ */
|
|
128541
|
+
/* @__PURE__ */ jsx68(
|
|
128517
128542
|
AuthInProgress,
|
|
128518
128543
|
{
|
|
128519
128544
|
onTimeout: () => {
|
|
@@ -128523,8 +128548,8 @@ ${queuedText}` : queuedText;
|
|
|
128523
128548
|
}
|
|
128524
128549
|
}
|
|
128525
128550
|
),
|
|
128526
|
-
showErrorDetails && /* @__PURE__ */
|
|
128527
|
-
/* @__PURE__ */
|
|
128551
|
+
showErrorDetails && /* @__PURE__ */ jsx68(OverflowProvider, { children: /* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", children: [
|
|
128552
|
+
/* @__PURE__ */ jsx68(
|
|
128528
128553
|
DetailedMessagesDisplay,
|
|
128529
128554
|
{
|
|
128530
128555
|
messages: filteredConsoleMessages,
|
|
@@ -128532,9 +128557,9 @@ ${queuedText}` : queuedText;
|
|
|
128532
128557
|
width: inputWidth
|
|
128533
128558
|
}
|
|
128534
128559
|
),
|
|
128535
|
-
/* @__PURE__ */
|
|
128560
|
+
/* @__PURE__ */ jsx68(ShowMoreLines, { constrainHeight })
|
|
128536
128561
|
] }) })
|
|
128537
|
-
] }) : isAuthDialogOpen ? /* @__PURE__ */
|
|
128562
|
+
] }) : isAuthDialogOpen ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128538
128563
|
AuthDialog,
|
|
128539
128564
|
{
|
|
128540
128565
|
onSelect: handleAuthSelect,
|
|
@@ -128542,7 +128567,7 @@ ${queuedText}` : queuedText;
|
|
|
128542
128567
|
initialErrorMessage: authError,
|
|
128543
128568
|
onQuickModelSwitch: openProviderDialog
|
|
128544
128569
|
}
|
|
128545
|
-
) }) : modelDialogState === "provider" ? /* @__PURE__ */
|
|
128570
|
+
) }) : modelDialogState === "provider" ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128546
128571
|
ProviderEndpointSelectionDialog,
|
|
128547
128572
|
{
|
|
128548
128573
|
onSelect: (providerType, endpointUrl, endpointLabel) => {
|
|
@@ -128554,7 +128579,7 @@ ${queuedText}` : queuedText;
|
|
|
128554
128579
|
},
|
|
128555
128580
|
onCancel: closeModelDialogs
|
|
128556
128581
|
}
|
|
128557
|
-
) }) : modelDialogState === "model" ? /* @__PURE__ */
|
|
128582
|
+
) }) : modelDialogState === "model" ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128558
128583
|
EnhancedModelSelectionDialog,
|
|
128559
128584
|
{
|
|
128560
128585
|
providerType: selectedProvider,
|
|
@@ -128564,7 +128589,7 @@ ${queuedText}` : queuedText;
|
|
|
128564
128589
|
onBack: goBackToProvider,
|
|
128565
128590
|
onCancel: closeModelDialogs
|
|
128566
128591
|
}
|
|
128567
|
-
) }) : shouldShowWelcomeBack && projectSummary ? /* @__PURE__ */
|
|
128592
|
+
) }) : shouldShowWelcomeBack && projectSummary ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128568
128593
|
WelcomeBackDialog,
|
|
128569
128594
|
{
|
|
128570
128595
|
projectSummary,
|
|
@@ -128573,8 +128598,8 @@ ${queuedText}` : queuedText;
|
|
|
128573
128598
|
onCancel: handleWelcomeBackCancel
|
|
128574
128599
|
}
|
|
128575
128600
|
) }) : isEditorDialogOpen ? /* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", children: [
|
|
128576
|
-
editorError && /* @__PURE__ */
|
|
128577
|
-
/* @__PURE__ */
|
|
128601
|
+
editorError && /* @__PURE__ */ jsx68(Box59, { marginBottom: 1, children: /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentRed, children: editorError }) }),
|
|
128602
|
+
/* @__PURE__ */ jsx68(
|
|
128578
128603
|
EditorSettingsDialog,
|
|
128579
128604
|
{
|
|
128580
128605
|
onSelect: handleEditorSelect,
|
|
@@ -128582,7 +128607,7 @@ ${queuedText}` : queuedText;
|
|
|
128582
128607
|
onExit: exitEditorDialog
|
|
128583
128608
|
}
|
|
128584
128609
|
)
|
|
128585
|
-
] }) : isSearchDialogOpen ? /* @__PURE__ */
|
|
128610
|
+
] }) : isSearchDialogOpen ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128586
128611
|
SearchEngineConfigDialog,
|
|
128587
128612
|
{
|
|
128588
128613
|
onSubmit: (result) => {
|
|
@@ -128599,7 +128624,7 @@ ${queuedText}` : queuedText;
|
|
|
128599
128624
|
setIsSearchDialogOpen(false);
|
|
128600
128625
|
}
|
|
128601
128626
|
}
|
|
128602
|
-
) }) : isAddCustomEndpointDialogOpen ? /* @__PURE__ */
|
|
128627
|
+
) }) : isAddCustomEndpointDialogOpen ? /* @__PURE__ */ jsx68(Box59, { flexDirection: "column", children: /* @__PURE__ */ jsx68(
|
|
128603
128628
|
AddCustomEndpointDialog,
|
|
128604
128629
|
{
|
|
128605
128630
|
onSubmit: async (name2, url2, apiKey, providerType) => {
|
|
@@ -128628,14 +128653,14 @@ ${queuedText}` : queuedText;
|
|
|
128628
128653
|
setIsAddCustomEndpointDialogOpen(false);
|
|
128629
128654
|
}
|
|
128630
128655
|
}
|
|
128631
|
-
) }) : showPrivacyNotice ? /* @__PURE__ */
|
|
128656
|
+
) }) : showPrivacyNotice ? /* @__PURE__ */ jsx68(
|
|
128632
128657
|
PrivacyNotice,
|
|
128633
128658
|
{
|
|
128634
128659
|
onExit: () => setShowPrivacyNotice(false),
|
|
128635
128660
|
config
|
|
128636
128661
|
}
|
|
128637
128662
|
) : /* @__PURE__ */ jsxs59(Fragment8, { children: [
|
|
128638
|
-
/* @__PURE__ */
|
|
128663
|
+
/* @__PURE__ */ jsx68(
|
|
128639
128664
|
LoadingIndicator,
|
|
128640
128665
|
{
|
|
128641
128666
|
thought: streamingState === "waiting_for_confirmation" /* WaitingForConfirmation */ || config.getAccessibility()?.disableLoadingPhrases ? void 0 : thought,
|
|
@@ -128648,10 +128673,10 @@ ${queuedText}` : queuedText;
|
|
|
128648
128673
|
const preview = message.replace(/\s+/g, " ");
|
|
128649
128674
|
return (
|
|
128650
128675
|
// Ensure the Box takes full width so truncation calculates correctly
|
|
128651
|
-
/* @__PURE__ */
|
|
128676
|
+
/* @__PURE__ */ jsx68(Box59, { paddingLeft: 2, width: "100%", children: /* @__PURE__ */ jsx68(Text63, { dimColor: true, wrap: "truncate", children: preview }) }, index)
|
|
128652
128677
|
);
|
|
128653
128678
|
}),
|
|
128654
|
-
messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && /* @__PURE__ */
|
|
128679
|
+
messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && /* @__PURE__ */ jsx68(Box59, { paddingLeft: 2, children: /* @__PURE__ */ jsxs59(Text63, { dimColor: true, children: [
|
|
128655
128680
|
"... (+",
|
|
128656
128681
|
messageQueue.length - MAX_DISPLAYED_QUEUED_MESSAGES,
|
|
128657
128682
|
" ",
|
|
@@ -128668,8 +128693,8 @@ ${queuedText}` : queuedText;
|
|
|
128668
128693
|
alignItems: isNarrow ? "flex-start" : "center",
|
|
128669
128694
|
children: [
|
|
128670
128695
|
/* @__PURE__ */ jsxs59(Box59, { children: [
|
|
128671
|
-
process18.env["GEMINI_SYSTEM_MD"] && /* @__PURE__ */
|
|
128672
|
-
ctrlCPressedOnce ? /* @__PURE__ */
|
|
128696
|
+
process18.env["GEMINI_SYSTEM_MD"] && /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentRed, children: "|\u2310\u25A0_\u25A0| " }),
|
|
128697
|
+
ctrlCPressedOnce ? /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentYellow, children: "Press Ctrl+C again to exit." }) : ctrlDPressedOnce ? /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentYellow, children: "Press Ctrl+D again to exit." }) : showEscapePrompt ? /* @__PURE__ */ jsx68(Text63, { color: Colors.Gray, children: "Press Esc again to clear." }) : /* @__PURE__ */ jsx68(
|
|
128673
128698
|
ContextSummaryDisplay,
|
|
128674
128699
|
{
|
|
128675
128700
|
ideContext: ideContextState,
|
|
@@ -128682,19 +128707,19 @@ ${queuedText}` : queuedText;
|
|
|
128682
128707
|
)
|
|
128683
128708
|
] }),
|
|
128684
128709
|
/* @__PURE__ */ jsxs59(Box59, { paddingTop: isNarrow ? 1 : 0, children: [
|
|
128685
|
-
showAutoAcceptIndicator !== ApprovalMode.DEFAULT && !shellModeActive && /* @__PURE__ */
|
|
128710
|
+
showAutoAcceptIndicator !== ApprovalMode.DEFAULT && !shellModeActive && /* @__PURE__ */ jsx68(
|
|
128686
128711
|
AutoAcceptIndicator,
|
|
128687
128712
|
{
|
|
128688
128713
|
approvalMode: showAutoAcceptIndicator
|
|
128689
128714
|
}
|
|
128690
128715
|
),
|
|
128691
|
-
shellModeActive && /* @__PURE__ */
|
|
128716
|
+
shellModeActive && /* @__PURE__ */ jsx68(ShellModeIndicator, {})
|
|
128692
128717
|
] })
|
|
128693
128718
|
]
|
|
128694
128719
|
}
|
|
128695
128720
|
),
|
|
128696
|
-
showErrorDetails && /* @__PURE__ */
|
|
128697
|
-
/* @__PURE__ */
|
|
128721
|
+
showErrorDetails && /* @__PURE__ */ jsx68(OverflowProvider, { children: /* @__PURE__ */ jsxs59(Box59, { flexDirection: "column", children: [
|
|
128722
|
+
/* @__PURE__ */ jsx68(
|
|
128698
128723
|
DetailedMessagesDisplay,
|
|
128699
128724
|
{
|
|
128700
128725
|
messages: filteredConsoleMessages,
|
|
@@ -128702,9 +128727,9 @@ ${queuedText}` : queuedText;
|
|
|
128702
128727
|
width: inputWidth
|
|
128703
128728
|
}
|
|
128704
128729
|
),
|
|
128705
|
-
/* @__PURE__ */
|
|
128730
|
+
/* @__PURE__ */ jsx68(ShowMoreLines, { constrainHeight })
|
|
128706
128731
|
] }) }),
|
|
128707
|
-
isInputActive && /* @__PURE__ */
|
|
128732
|
+
isInputActive && /* @__PURE__ */ jsx68(
|
|
128708
128733
|
InputPrompt,
|
|
128709
128734
|
{
|
|
128710
128735
|
buffer,
|
|
@@ -128725,7 +128750,7 @@ ${queuedText}` : queuedText;
|
|
|
128725
128750
|
}
|
|
128726
128751
|
)
|
|
128727
128752
|
] }),
|
|
128728
|
-
initError && streamingState !== "responding" /* Responding */ && /* @__PURE__ */
|
|
128753
|
+
initError && streamingState !== "responding" /* Responding */ && /* @__PURE__ */ jsx68(
|
|
128729
128754
|
Box59,
|
|
128730
128755
|
{
|
|
128731
128756
|
borderStyle: "round",
|
|
@@ -128734,7 +128759,7 @@ ${queuedText}` : queuedText;
|
|
|
128734
128759
|
marginBottom: 1,
|
|
128735
128760
|
children: history.find(
|
|
128736
128761
|
(item) => item.type === "error" && item.text?.includes(initError)
|
|
128737
|
-
)?.text ? /* @__PURE__ */
|
|
128762
|
+
)?.text ? /* @__PURE__ */ jsx68(Text63, { color: Colors.AccentRed, children: history.find(
|
|
128738
128763
|
(item) => item.type === "error" && item.text?.includes(initError)
|
|
128739
128764
|
)?.text }) : /* @__PURE__ */ jsxs59(Fragment8, { children: [
|
|
128740
128765
|
/* @__PURE__ */ jsxs59(Text63, { color: Colors.AccentRed, children: [
|
|
@@ -128748,7 +128773,7 @@ ${queuedText}` : queuedText;
|
|
|
128748
128773
|
] })
|
|
128749
128774
|
}
|
|
128750
128775
|
),
|
|
128751
|
-
!settings.merged.hideFooter && /* @__PURE__ */
|
|
128776
|
+
!settings.merged.hideFooter && /* @__PURE__ */ jsx68(
|
|
128752
128777
|
Footer,
|
|
128753
128778
|
{
|
|
128754
128779
|
model: currentModel,
|
|
@@ -131109,7 +131134,7 @@ function toPermissionOptions(confirmation) {
|
|
|
131109
131134
|
}
|
|
131110
131135
|
|
|
131111
131136
|
// packages/cli/src/gemini.tsx
|
|
131112
|
-
import { jsx as
|
|
131137
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
131113
131138
|
var DEBUG_CLI = process.env["FSS_DEBUG"] === "true" || process.env["NODE_ENV"] === "development";
|
|
131114
131139
|
function validateDnsResolutionOrder(order) {
|
|
131115
131140
|
const defaultValue = "ipv4first";
|
|
@@ -131317,7 +131342,7 @@ async function main() {
|
|
|
131317
131342
|
await detectAndEnableKittyProtocol();
|
|
131318
131343
|
setWindowTitle(basename15(workspaceRoot), settings);
|
|
131319
131344
|
const instance = render2(
|
|
131320
|
-
/* @__PURE__ */
|
|
131345
|
+
/* @__PURE__ */ jsx69(React31.StrictMode, { children: /* @__PURE__ */ jsx69(SettingsContext.Provider, { value: settings, children: /* @__PURE__ */ jsx69(
|
|
131321
131346
|
AppWrapper,
|
|
131322
131347
|
{
|
|
131323
131348
|
config,
|