@jx-grxf/patchpilot 0.4.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +17 -1
- package/README.md +113 -23
- package/SECURITY.md +7 -1
- package/dist/cli.js +103 -14
- package/dist/cli.js.map +1 -1
- package/dist/core/agent.d.ts +47 -1
- package/dist/core/agent.js +667 -76
- package/dist/core/agent.js.map +1 -1
- package/dist/core/cleanup.d.ts +3 -0
- package/dist/core/cleanup.js +29 -0
- package/dist/core/cleanup.js.map +1 -0
- package/dist/core/clipboard.d.ts +14 -0
- package/dist/core/clipboard.js +134 -0
- package/dist/core/clipboard.js.map +1 -0
- package/dist/core/codex.d.ts +8 -0
- package/dist/core/codex.js +28 -2
- package/dist/core/codex.js.map +1 -1
- package/dist/core/compaction.d.ts +23 -0
- package/dist/core/compaction.js +145 -0
- package/dist/core/compaction.js.map +1 -0
- package/dist/core/contextFormat.d.ts +21 -0
- package/dist/core/contextFormat.js +87 -0
- package/dist/core/contextFormat.js.map +1 -0
- package/dist/core/contextItem.d.ts +41 -0
- package/dist/core/contextItem.js +93 -0
- package/dist/core/contextItem.js.map +1 -0
- package/dist/core/contextStore.d.ts +48 -0
- package/dist/core/contextStore.js +306 -0
- package/dist/core/contextStore.js.map +1 -0
- package/dist/core/doctor.d.ts +4 -1
- package/dist/core/doctor.js +122 -3
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/gemini.js +10 -4
- package/dist/core/gemini.js.map +1 -1
- package/dist/core/geminiWrapper.d.ts +92 -0
- package/dist/core/geminiWrapper.js +1258 -0
- package/dist/core/geminiWrapper.js.map +1 -0
- package/dist/core/http.js +70 -6
- package/dist/core/http.js.map +1 -1
- package/dist/core/json.d.ts +1 -1
- package/dist/core/json.js +81 -19
- package/dist/core/json.js.map +1 -1
- package/dist/core/memory.d.ts +16 -0
- package/dist/core/memory.js +108 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/modelClient.js +7 -0
- package/dist/core/modelClient.js.map +1 -1
- package/dist/core/nvidia.d.ts +1 -1
- package/dist/core/nvidia.js +13 -4
- package/dist/core/nvidia.js.map +1 -1
- package/dist/core/ollama.js +13 -3
- package/dist/core/ollama.js.map +1 -1
- package/dist/core/openrouter.js +15 -6
- package/dist/core/openrouter.js.map +1 -1
- package/dist/core/projectInit.d.ts +6 -0
- package/dist/core/projectInit.js +44 -0
- package/dist/core/projectInit.js.map +1 -0
- package/dist/core/reasoning.js +6 -0
- package/dist/core/reasoning.js.map +1 -1
- package/dist/core/session.d.ts +1 -0
- package/dist/core/session.js +55 -3
- package/dist/core/session.js.map +1 -1
- package/dist/core/tokenAccounting.d.ts +4 -0
- package/dist/core/tokenAccounting.js +75 -13
- package/dist/core/tokenAccounting.js.map +1 -1
- package/dist/core/types.d.ts +65 -5
- package/dist/core/types.js +30 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/updateCheck.d.ts +19 -0
- package/dist/core/updateCheck.js +103 -0
- package/dist/core/updateCheck.js.map +1 -0
- package/dist/core/workspace.d.ts +37 -0
- package/dist/core/workspace.js +1535 -84
- package/dist/core/workspace.js.map +1 -1
- package/dist/tui/App.d.ts +1 -0
- package/dist/tui/App.js +1841 -140
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/commands.js +141 -9
- package/dist/tui/commands.js.map +1 -1
- package/dist/tui/components/ApprovalPanel.js +16 -1
- package/dist/tui/components/ApprovalPanel.js.map +1 -1
- package/dist/tui/components/CommandSuggestions.js +33 -5
- package/dist/tui/components/CommandSuggestions.js.map +1 -1
- package/dist/tui/components/Composer.d.ts +3 -0
- package/dist/tui/components/Composer.js +57 -5
- package/dist/tui/components/Composer.js.map +1 -1
- package/dist/tui/components/ExperimentalPanel.d.ts +10 -0
- package/dist/tui/components/ExperimentalPanel.js +38 -0
- package/dist/tui/components/ExperimentalPanel.js.map +1 -0
- package/dist/tui/components/Header.js +3 -3
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/OnboardingPanel.d.ts +25 -1
- package/dist/tui/components/OnboardingPanel.js +87 -25
- package/dist/tui/components/OnboardingPanel.js.map +1 -1
- package/dist/tui/components/Sidebar.js +17 -13
- package/dist/tui/components/Sidebar.js.map +1 -1
- package/dist/tui/components/StartupBanner.d.ts +4 -0
- package/dist/tui/components/StartupBanner.js +9 -0
- package/dist/tui/components/StartupBanner.js.map +1 -0
- package/dist/tui/components/Transcript.d.ts +7 -0
- package/dist/tui/components/Transcript.js +87 -17
- package/dist/tui/components/Transcript.js.map +1 -1
- package/dist/tui/contextCommands.d.ts +8 -0
- package/dist/tui/contextCommands.js +205 -0
- package/dist/tui/contextCommands.js.map +1 -0
- package/dist/tui/experimental/AnimatedText.d.ts +38 -0
- package/dist/tui/experimental/AnimatedText.js +55 -0
- package/dist/tui/experimental/AnimatedText.js.map +1 -0
- package/dist/tui/experimental/Banner.d.ts +10 -0
- package/dist/tui/experimental/Banner.js +33 -0
- package/dist/tui/experimental/Banner.js.map +1 -0
- package/dist/tui/experimental/CommandPalette.d.ts +11 -0
- package/dist/tui/experimental/CommandPalette.js +25 -0
- package/dist/tui/experimental/CommandPalette.js.map +1 -0
- package/dist/tui/experimental/ExperimentalShell.d.ts +58 -0
- package/dist/tui/experimental/ExperimentalShell.js +366 -0
- package/dist/tui/experimental/ExperimentalShell.js.map +1 -0
- package/dist/tui/experimental/ThemePicker.d.ts +13 -0
- package/dist/tui/experimental/ThemePicker.js +12 -0
- package/dist/tui/experimental/ThemePicker.js.map +1 -0
- package/dist/tui/experimental/attachments.d.ts +35 -0
- package/dist/tui/experimental/attachments.js +244 -0
- package/dist/tui/experimental/attachments.js.map +1 -0
- package/dist/tui/experimental/composer.d.ts +24 -0
- package/dist/tui/experimental/composer.js +84 -0
- package/dist/tui/experimental/composer.js.map +1 -0
- package/dist/tui/experimental/geminiPricing.d.ts +16 -0
- package/dist/tui/experimental/geminiPricing.js +39 -0
- package/dist/tui/experimental/geminiPricing.js.map +1 -0
- package/dist/tui/experimental/layout.d.ts +46 -0
- package/dist/tui/experimental/layout.js +112 -0
- package/dist/tui/experimental/layout.js.map +1 -0
- package/dist/tui/experimental/theme.d.ts +35 -0
- package/dist/tui/experimental/theme.js +86 -0
- package/dist/tui/experimental/theme.js.map +1 -0
- package/dist/tui/experimental/transcriptRows.d.ts +20 -0
- package/dist/tui/experimental/transcriptRows.js +169 -0
- package/dist/tui/experimental/transcriptRows.js.map +1 -0
- package/dist/tui/experimental/ultraModes.d.ts +46 -0
- package/dist/tui/experimental/ultraModes.js +95 -0
- package/dist/tui/experimental/ultraModes.js.map +1 -0
- package/dist/tui/experimental/ultramaxx.d.ts +19 -0
- package/dist/tui/experimental/ultramaxx.js +43 -0
- package/dist/tui/experimental/ultramaxx.js.map +1 -0
- package/dist/tui/format.d.ts +4 -2
- package/dist/tui/format.js +21 -7
- package/dist/tui/format.js.map +1 -1
- package/dist/tui/hosts.js +7 -1
- package/dist/tui/hosts.js.map +1 -1
- package/dist/tui/layout.d.ts +26 -0
- package/dist/tui/layout.js +66 -0
- package/dist/tui/layout.js.map +1 -0
- package/dist/tui/modelSelection.d.ts +1 -1
- package/dist/tui/modelSelection.js +8 -6
- package/dist/tui/modelSelection.js.map +1 -1
- package/dist/tui/modes.d.ts +8 -1
- package/dist/tui/modes.js +20 -2
- package/dist/tui/modes.js.map +1 -1
- package/dist/tui/onboardingPreferences.d.ts +37 -0
- package/dist/tui/onboardingPreferences.js +118 -0
- package/dist/tui/onboardingPreferences.js.map +1 -0
- package/dist/tui/runStatus.d.ts +50 -0
- package/dist/tui/runStatus.js +164 -0
- package/dist/tui/runStatus.js.map +1 -0
- package/dist/tui/types.d.ts +8 -0
- package/dist/tui/types.js.map +1 -1
- package/docs/architecture.md +115 -0
- package/docs/gemini-wrapper.md +110 -0
- package/docs/product-context.md +43 -0
- package/docs/releases/v0.1.1-beta.md +18 -0
- package/docs/releases/v0.2.1.md +1 -1
- package/docs/releases/v0.3.1-beta.md +4 -0
- package/docs/releases/v0.4.0.md +1 -1
- package/docs/releases/v1.0.0.md +28 -0
- package/docs/releases/v1.0.1.md +25 -0
- package/docs/releases/v1.1.0.md +30 -0
- package/docs/releases/v1.2.0.md +28 -0
- package/docs/showcase/patchpilot-banner.png +0 -0
- package/docs/showcase/patchpilot-logo.png +0 -0
- package/package.json +8 -3
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { ModelProvider } from "../../core/types.js";
|
|
3
3
|
import type { OllamaHost } from "../hosts.js";
|
|
4
|
-
|
|
4
|
+
import { type OnboardingPreferences } from "../onboardingPreferences.js";
|
|
5
|
+
export type ApiKeyProvider = "gemini" | "gemini-wrapper" | "openrouter" | "nvidia";
|
|
5
6
|
export type OnboardingState = {
|
|
7
|
+
step: "welcome";
|
|
8
|
+
} | {
|
|
9
|
+
step: "disclaimer";
|
|
10
|
+
} | {
|
|
6
11
|
step: "entry";
|
|
7
12
|
} | {
|
|
8
13
|
step: "host";
|
|
@@ -15,6 +20,18 @@ export type OnboardingState = {
|
|
|
15
20
|
hasExistingKey: boolean;
|
|
16
21
|
} | {
|
|
17
22
|
step: "gemini-key";
|
|
23
|
+
} | {
|
|
24
|
+
step: "gemini-wrapper-url";
|
|
25
|
+
} | {
|
|
26
|
+
step: "gemini-wrapper-psid";
|
|
27
|
+
} | {
|
|
28
|
+
step: "gemini-wrapper-psidts";
|
|
29
|
+
secure1psid: string;
|
|
30
|
+
} | {
|
|
31
|
+
step: "gemini-wrapper-model-mode";
|
|
32
|
+
} | {
|
|
33
|
+
step: "gemini-wrapper-key";
|
|
34
|
+
baseUrl: string;
|
|
18
35
|
} | {
|
|
19
36
|
step: "openrouter-key";
|
|
20
37
|
} | {
|
|
@@ -26,6 +43,11 @@ export type OnboardingState = {
|
|
|
26
43
|
provider: ModelProvider;
|
|
27
44
|
models: string[];
|
|
28
45
|
deviceName?: string;
|
|
46
|
+
} | {
|
|
47
|
+
step: "preferences";
|
|
48
|
+
provider: ModelProvider;
|
|
49
|
+
model: string;
|
|
50
|
+
preferences: OnboardingPreferences;
|
|
29
51
|
};
|
|
30
52
|
export declare function OnboardingPanel(props: {
|
|
31
53
|
state: OnboardingState;
|
|
@@ -38,6 +60,8 @@ export declare function OnboardingPanel(props: {
|
|
|
38
60
|
text: string;
|
|
39
61
|
detail?: string;
|
|
40
62
|
} | null;
|
|
63
|
+
formatModelLabel?: (model: string) => string;
|
|
64
|
+
formatModelDescription?: (model: string) => string;
|
|
41
65
|
onInputChange: (value: string) => void;
|
|
42
66
|
onInputSubmit: (value: string) => void;
|
|
43
67
|
}): React.ReactElement;
|
|
@@ -1,44 +1,61 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import TextInput from "ink-text-input";
|
|
4
4
|
import { selectableModels } from "../modelSelection.js";
|
|
5
|
+
import { symbols } from "../experimental/theme.js";
|
|
6
|
+
import { describePreferenceValue, preferenceRows, preferenceValueString, } from "../onboardingPreferences.js";
|
|
5
7
|
const entryOptions = [
|
|
6
8
|
{
|
|
7
9
|
label: "This Device",
|
|
8
|
-
description: "Run Ollama locally
|
|
10
|
+
description: "Run Ollama locally — fully offline, nothing leaves the machine"
|
|
9
11
|
},
|
|
10
12
|
{
|
|
11
13
|
label: "Remote Host",
|
|
12
|
-
description: "
|
|
14
|
+
description: "Reach Ollama on another LAN or Tailscale machine"
|
|
13
15
|
},
|
|
14
16
|
{
|
|
15
17
|
label: "Gemini",
|
|
16
|
-
description: "
|
|
18
|
+
description: "Google Gemini API — fast hosted models with an API key"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
label: "Gemini-Wrapper",
|
|
22
|
+
description: "Local Gemini Web bridge driven by pasted browser cookies"
|
|
17
23
|
},
|
|
18
24
|
{
|
|
19
25
|
label: "OpenRouter",
|
|
20
|
-
description: "
|
|
26
|
+
description: "One key, many models — including auto-routed and free tiers"
|
|
21
27
|
},
|
|
22
28
|
{
|
|
23
29
|
label: "NVIDIA",
|
|
24
|
-
description: "
|
|
30
|
+
description: "NVIDIA NIM OpenAI-compatible inference endpoints"
|
|
25
31
|
},
|
|
26
32
|
{
|
|
27
33
|
label: "Codex",
|
|
28
|
-
description: "
|
|
34
|
+
description: "Sign in with your ChatGPT account through the Codex CLI"
|
|
29
35
|
}
|
|
30
36
|
];
|
|
37
|
+
const stepFlow = ["workflow", "host", "auth", "model", "tune"];
|
|
31
38
|
export function OnboardingPanel(props) {
|
|
32
|
-
const currentStepIndex = props.state.step === "entry"
|
|
39
|
+
const currentStepIndex = props.state.step === "welcome" || props.state.step === "disclaimer" || props.state.step === "entry"
|
|
33
40
|
? 0
|
|
34
41
|
: props.state.step === "host" || props.state.step === "host-input"
|
|
35
42
|
? 1
|
|
36
|
-
: props.state.step === "api-key-choice" || props.state.step === "gemini-key" || props.state.step === "openrouter-key" || props.state.step === "nvidia-key" || props.state.step === "codex-login"
|
|
43
|
+
: props.state.step === "api-key-choice" || props.state.step === "gemini-key" || props.state.step === "gemini-wrapper-url" || props.state.step === "gemini-wrapper-psid" || props.state.step === "gemini-wrapper-psidts" || props.state.step === "gemini-wrapper-model-mode" || props.state.step === "gemini-wrapper-key" || props.state.step === "openrouter-key" || props.state.step === "nvidia-key" || props.state.step === "codex-login"
|
|
37
44
|
? 2
|
|
38
|
-
:
|
|
39
|
-
|
|
45
|
+
: props.state.step === "model"
|
|
46
|
+
? 3
|
|
47
|
+
: 4;
|
|
48
|
+
const formatModelLabel = props.formatModelLabel ?? ((model) => model);
|
|
49
|
+
const formatModelDescription = props.formatModelDescription ?? (() => "");
|
|
50
|
+
const visibleModels = props.state.step === "model" ? selectableModels(props.input, props.state.models, formatModelLabel) : [];
|
|
40
51
|
const selectedModel = props.state.step === "model" ? visibleModels[props.selectedIndex] ?? null : null;
|
|
41
|
-
return (_jsxs(Box, { borderStyle: "round", borderColor: "cyan", flexDirection: "column", paddingX: 2, height: props.height, overflowY: "hidden", children: [
|
|
52
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: "cyan", flexDirection: "column", paddingX: 2, paddingY: 1, height: props.height, overflowY: "hidden", children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: "cyan", bold: true, children: [symbols.assistant, " PatchPilot"] }), _jsx(Text, { color: "gray", children: " \u2014 first-run setup" })] }), _jsxs(Text, { color: "gray", children: ["A few quick choices, then you are ready to ship. ", symbols.bullet, " reopen anytime with /onboarding"] }), _jsx(Box, { marginTop: 1, flexDirection: "row", children: stepFlow.map((step, index) => {
|
|
53
|
+
const done = index < currentStepIndex;
|
|
54
|
+
const active = index === currentStepIndex;
|
|
55
|
+
const glyph = done ? symbols.todoDone : active ? symbols.todoActive : symbols.todoPending;
|
|
56
|
+
const color = done ? "green" : active ? "cyan" : "gray";
|
|
57
|
+
return (_jsxs(Text, { color: color, bold: active, children: [index > 0 ? " " : "", glyph, " ", step] }, step));
|
|
58
|
+
}) }), props.busyMessage ? (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "yellow", children: [symbols.status, " ", props.busyMessage] }) })) : null, props.notice ? (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: props.notice.tone === "success" ? "green" : props.notice.tone === "warning" ? "yellow" : "red", children: [props.notice.tone === "success" ? symbols.final : props.notice.tone === "warning" ? symbols.approval : symbols.error, " ", props.notice.text] }), props.notice.detail ? _jsxs(Text, { color: "gray", children: [" ", props.notice.detail] }) : null] })) : null, props.state.step === "welcome" ? (_jsx(WelcomeStep, {})) : null, props.state.step === "disclaimer" ? (_jsx(DisclaimerStep, {})) : null, props.state.step === "entry" ? (_jsx(SelectionList, { title: "Where should the model run?", subtitle: `${symbols.arrow} up/down to move ${symbols.bullet} enter to pick ${symbols.bullet} esc skips setup`, rows: entryOptions, selectedIndex: props.selectedIndex })) : null, props.state.step === "host" ? (_jsx(SelectionList, { title: "Choose a host", subtitle: `Top row enters a host by hand ${symbols.bullet} ${symbols.arrow} left goes back`, rows: [
|
|
42
59
|
{
|
|
43
60
|
label: "Enter Host Manually",
|
|
44
61
|
description: "Type a LAN IP, Tailscale IP, MagicDNS name, or full URL"
|
|
@@ -47,37 +64,82 @@ export function OnboardingPanel(props) {
|
|
|
47
64
|
label: host.deviceName,
|
|
48
65
|
description: `${host.kind} ${host.url}${host.version ? ` Ollama ${host.version}` : ""}`
|
|
49
66
|
}))
|
|
50
|
-
], selectedIndex: props.selectedIndex })) : null, props.state.step === "host-input" ? (_jsx(InputStep, { title: "Connect to a host", description: "Enter a LAN IP, Tailscale IP, MagicDNS name, or full URL.", prompt: "host > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit })) : null, props.state.step === "api-key-choice" ? (_jsx(SelectionList, { title: `${providerLabel(props.state.provider)} API key`, subtitle: "
|
|
67
|
+
], selectedIndex: props.selectedIndex })) : null, props.state.step === "host-input" ? (_jsx(InputStep, { title: "Connect to a host", description: "Enter a LAN IP, Tailscale IP, MagicDNS name, or full URL.", prompt: "host > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit })) : null, props.state.step === "api-key-choice" ? (_jsx(SelectionList, { title: props.state.provider === "gemini-wrapper" ? "Gemini-Wrapper bridge auth" : `${providerLabel(props.state.provider)} API key`, subtitle: props.state.provider === "gemini-wrapper" ? "Saved cookies stay in PatchPilot config, never the repo." : "Existing keys stay in PatchPilot config, never the repo.", rows: [
|
|
51
68
|
...(props.state.hasExistingKey
|
|
52
69
|
? [
|
|
53
70
|
{
|
|
54
|
-
label: "Use Existing Key",
|
|
55
|
-
description: "Continue with the saved key"
|
|
71
|
+
label: props.state.provider === "gemini-wrapper" ? "Use Saved Bridge" : "Use Existing Key",
|
|
72
|
+
description: props.state.provider === "gemini-wrapper" ? "Continue with the saved cookie file" : "Continue with the saved key"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
: []),
|
|
76
|
+
...(props.state.provider === "gemini-wrapper"
|
|
77
|
+
? [
|
|
78
|
+
{
|
|
79
|
+
label: "Import From Browser",
|
|
80
|
+
description: "Read Gemini Web cookies locally after this explicit choice"
|
|
56
81
|
}
|
|
57
82
|
]
|
|
58
83
|
: []),
|
|
59
84
|
{
|
|
60
|
-
label: "Enter New Key",
|
|
61
|
-
description: "Replace or add the key in PatchPilot config"
|
|
85
|
+
label: props.state.provider === "gemini-wrapper" ? "Paste Cookie" : "Enter New Key",
|
|
86
|
+
description: props.state.provider === "gemini-wrapper" ? "Replace the Gemini Web cookie file in PatchPilot config" : "Replace or add the key in PatchPilot config"
|
|
87
|
+
}
|
|
88
|
+
], selectedIndex: props.selectedIndex })) : null, props.state.step === "gemini-key" ? (_jsx(InputStep, { title: "Enter your Gemini API key", description: "Stored in PatchPilot's config directory, never in the repository.", prompt: "key > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit, mask: "*" })) : null, props.state.step === "gemini-wrapper-url" ? (_jsx(InputStep, { title: "Connect Gemini-Wrapper HTTP", description: "Optional advanced mode: enter an explicit OpenAI-compatible wrapper URL.", prompt: "url > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit })) : null, props.state.step === "gemini-wrapper-psid" ? (_jsx(InputStep, { title: "Connect Gemini-API bridge", description: "Paste __Secure-1PSID. PatchPilot stores it in ~/.patchpilot/gemini-cookies.json with owner-only permissions.", prompt: "psid > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit, mask: "*" })) : null, props.state.step === "gemini-wrapper-psidts" ? (_jsx(InputStep, { title: "Optional Gemini session timestamp", description: "Paste __Secure-1PSIDTS if you have it, or press Enter to skip.", prompt: "ts > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit, mask: "*" })) : null, props.state.step === "gemini-wrapper-model-mode" ? (_jsx(SelectionList, { title: "Gemini-Wrapper model", subtitle: "Shortcuts resolve through live Gemini Web discovery; Denkaufwand is not a stable bridge control yet.", rows: [
|
|
89
|
+
{
|
|
90
|
+
label: "Auto",
|
|
91
|
+
description: "Let Gemini Web pick the current default model"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: "Flash-Lite",
|
|
95
|
+
description: "Resolve the live Gemini Web Flash-Lite model"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: "Flash",
|
|
99
|
+
description: "Resolve the live Flash model, preferring 3.5 Flash when the bridge lists it"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: "Pro",
|
|
103
|
+
description: "Resolve the live Gemini Web Pro model"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
label: "Manual",
|
|
107
|
+
description: "Fetch available Gemini Web models and choose one"
|
|
62
108
|
}
|
|
63
|
-
], selectedIndex: props.selectedIndex })) : null, props.state.step === "gemini-key" ? (_jsx(InputStep, { title: "Enter
|
|
64
|
-
label: model,
|
|
65
|
-
description: model === selectedModel ? "selected" : "available"
|
|
66
|
-
})), selectedIndex: props.selectedIndex })] })) : null, _jsx(Box, { marginTop: 1, children:
|
|
109
|
+
], selectedIndex: props.selectedIndex })) : null, props.state.step === "gemini-wrapper-key" ? (_jsx(InputStep, { title: "Enter Gemini-Wrapper API key", description: "Required for remote wrapper URLs. Local wrapper URLs may leave this empty.", prompt: "key > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit, mask: "*" })) : null, props.state.step === "openrouter-key" ? (_jsx(InputStep, { title: "Enter your OpenRouter API key", description: "Stored in PatchPilot's config directory, never in the repository.", prompt: "key > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit, mask: "*" })) : null, props.state.step === "nvidia-key" ? (_jsx(InputStep, { title: "Enter your NVIDIA API key", description: "Stored in PatchPilot's config directory, never in the repository.", prompt: "key > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit, mask: "*" })) : null, props.state.step === "codex-login" ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { color: "white", bold: true, children: [symbols.arrow, " Connect Codex CLI"] }), _jsx(Text, { color: "gray", children: "Run `codex login` in another terminal, then press Enter here to continue." }), _jsxs(Text, { color: "gray", children: [symbols.bullet, " esc or left arrow goes back"] })] })) : null, props.state.step === "model" ? (_jsxs(_Fragment, { children: [_jsx(InputStep, { title: `Choose a ${props.state.provider} model${props.state.deviceName ? ` on ${props.state.deviceName}` : ""}`, description: "Type to filter. Up/down to move, enter to pick. Left arrow goes back.", prompt: "find > ", value: props.input, onChange: props.onInputChange, onSubmit: props.onInputSubmit }), _jsx(SelectionList, { title: "", subtitle: `${visibleModels.length} matching model${visibleModels.length === 1 ? "" : "s"}`, rows: visibleModels.map((model) => ({
|
|
110
|
+
label: formatModelLabel(model),
|
|
111
|
+
description: `${model === selectedModel ? "selected" : "available"}${formatModelDescription(model)}`
|
|
112
|
+
})), selectedIndex: props.selectedIndex })] })) : null, props.state.step === "preferences" ? (_jsx(PreferencesStep, { provider: props.state.provider, model: props.state.model, preferences: props.state.preferences, selectedIndex: props.selectedIndex })) : null, _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", children: [symbols.info, " Remote inference keeps file reads, writes, shell, Git, and tests on this device \u2014 only the model call moves."] }) })] }));
|
|
113
|
+
}
|
|
114
|
+
function WelcomeStep() {
|
|
115
|
+
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: "cyan", bold: true, children: [symbols.assistant, " A coding agent you can watch work"] }), _jsx(Text, { color: "gray", children: "Local-first. Every read, write, command, and model route stays visible and inspectable." }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: "white", children: [symbols.todoActive, " Plan ", symbols.bullet, " read files, map the architecture, keep a live todo list"] }), _jsxs(Text, { color: "white", children: [symbols.todoActive, " Build ", symbols.bullet, " scoped approvals for edits, scripts, tests, and shell"] }), _jsxs(Text, { color: "white", children: [symbols.todoActive, " Review ", symbols.bullet, " show diffs, run checks, leave Git history ready for you"] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: "yellow", children: [symbols.pin, " First task to try: \"summarize this repo and list the safest next fixes\""] }), _jsxs(Text, { color: "gray", children: [symbols.arrow, " enter continues ", symbols.bullet, " esc skips ", symbols.bullet, " reopen later with /onboarding"] })] })] }));
|
|
116
|
+
}
|
|
117
|
+
function DisclaimerStep() {
|
|
118
|
+
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { color: "yellow", bold: true, children: [symbols.approval, " Use at your own risk"] }), _jsx(Text, { color: "gray", children: "PatchPilot can read files, edit files, and run shell commands when you enable those capabilities." }), _jsx(Text, { color: "gray", children: "You remain responsible for reviewing actions, diffs, commands, provider terms, and generated output." }), _jsx(Text, { color: "gray", children: "The software is provided as-is, without warranty or liability from the maintainer." }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Press [y] to accept and continue" }), _jsxs(Text, { color: "gray", children: [" ", symbols.bullet, " Esc goes back"] })] })] }));
|
|
67
119
|
}
|
|
68
120
|
function providerLabel(provider) {
|
|
69
|
-
return provider === "openrouter" ? "OpenRouter" : provider === "nvidia" ? "NVIDIA" : "Gemini";
|
|
121
|
+
return provider === "openrouter" ? "OpenRouter" : provider === "nvidia" ? "NVIDIA" : provider === "gemini-wrapper" ? "Gemini-Wrapper" : "Gemini";
|
|
122
|
+
}
|
|
123
|
+
function PreferencesStep(props) {
|
|
124
|
+
const rows = preferenceRows;
|
|
125
|
+
const confirmIndex = rows.length;
|
|
126
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "white", bold: true, children: "Tune your defaults" }), _jsxs(Text, { color: "gray", children: [symbols.final, " ", props.provider, " ", symbols.bullet, " ", props.model] }), _jsxs(Text, { color: "gray", children: [symbols.arrow, " up/down to move ", symbols.bullet, " left/right to change ", symbols.bullet, " enter to finish"] }), rows.map((row, index) => {
|
|
127
|
+
const isSelected = index === props.selectedIndex;
|
|
128
|
+
const value = preferenceValueString(props.preferences, row.key);
|
|
129
|
+
return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 3, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", children: isSelected ? symbols.todoActive : " " }) }), _jsx(Box, { width: 30, children: _jsx(Text, { color: isSelected ? "white" : "gray", bold: isSelected, children: row.label }) }), _jsxs(Text, { color: isSelected ? "cyan" : "gray", bold: true, children: [isSelected ? `${symbols.arrow} ` : " ", value] })] }), isSelected ? (_jsx(Box, { marginLeft: 3, children: _jsx(Text, { color: "gray", children: describePreferenceValue(row.key, value) }) })) : null] }, row.key));
|
|
130
|
+
}), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsx(Box, { width: 3, children: _jsx(Text, { color: props.selectedIndex === confirmIndex ? "green" : "gray", children: props.selectedIndex === confirmIndex ? symbols.todoActive : " " }) }), _jsxs(Text, { color: props.selectedIndex === confirmIndex ? "green" : "gray", bold: props.selectedIndex === confirmIndex, children: [symbols.final, " Finish setup and start session"] })] })] }));
|
|
70
131
|
}
|
|
71
132
|
function InputStep(props) {
|
|
72
|
-
return (_jsxs(Box, { flexDirection: "column", marginTop:
|
|
133
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "white", bold: true, children: props.title }), _jsx(Text, { color: "gray", children: props.description }), _jsxs(Box, { marginTop: 1, children: [_jsxs(Text, { color: "cyan", children: [symbols.user, " ", props.prompt] }), _jsx(TextInput, { value: props.value, onChange: props.onChange, onSubmit: props.onSubmit, mask: props.mask })] })] }));
|
|
73
134
|
}
|
|
74
135
|
function SelectionList(props) {
|
|
75
136
|
const startIndex = Math.max(0, Math.min(props.selectedIndex - 4, Math.max(0, props.rows.length - 8)));
|
|
76
137
|
const visibleRows = props.rows.slice(startIndex, startIndex + 8);
|
|
77
|
-
|
|
138
|
+
const endIndex = startIndex + visibleRows.length;
|
|
139
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [props.title ? (_jsx(Text, { color: "white", bold: true, children: props.title })) : null, _jsxs(Text, { color: "gray", children: [props.subtitle, " ", props.rows.length > 0 ? `${startIndex + 1}-${endIndex}/${props.rows.length}` : "0/0"] }), visibleRows.map((row, index) => {
|
|
78
140
|
const absoluteIndex = startIndex + index;
|
|
79
141
|
const isSelected = absoluteIndex === props.selectedIndex;
|
|
80
|
-
return (_jsxs(Box, { marginTop: 1, children: [_jsx(Box, { width: 3, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", children: isSelected ?
|
|
142
|
+
return (_jsxs(Box, { marginTop: 1, children: [_jsx(Box, { width: 3, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", children: isSelected ? symbols.todoActive : " " }) }), _jsx(Box, { width: 28, children: _jsx(Text, { color: isSelected ? "white" : "cyan", bold: isSelected, wrap: "truncate", children: row.label }) }), _jsx(Text, { color: isSelected ? "white" : "gray", wrap: "truncate", children: row.description })] }, `${absoluteIndex}-${row.label}`));
|
|
81
143
|
})] }));
|
|
82
144
|
}
|
|
83
145
|
//# sourceMappingURL=OnboardingPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingPanel.js","sourceRoot":"","sources":["../../../src/tui/components/OnboardingPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OnboardingPanel.js","sourceRoot":"","sources":["../../../src/tui/components/OnboardingPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,11 @@ import { Box, Text } from "ink";
|
|
|
3
3
|
import { formatCost, formatGpuMemory, formatGpuUtilization, formatOllamaHost, formatSessionTokens, formatTokens, shortenMiddle } from "../format.js";
|
|
4
4
|
import { modeDescription, modePermissionLabel } from "../modes.js";
|
|
5
5
|
export function Sidebar(props) {
|
|
6
|
-
const
|
|
6
|
+
const allRows = buildSidebarRows(props);
|
|
7
|
+
const visibleCount = Math.max(1, props.height - 2);
|
|
8
|
+
const maxOffset = Math.max(0, allRows.length - visibleCount);
|
|
9
|
+
const offset = Math.max(0, Math.min(props.scrollOffset, maxOffset));
|
|
10
|
+
const rows = allRows.slice(offset, offset + visibleCount);
|
|
7
11
|
return (_jsx(Box, { width: 32, height: props.height, overflowY: "hidden", borderStyle: "round", borderColor: props.isActive ? "cyan" : "gray", flexDirection: "column", paddingX: 1, marginRight: 1, children: rows.map((row, index) => (_jsx(Text, { color: row.color, bold: row.bold, wrap: "truncate", children: row.text }, `${index}-${row.text}`))) }));
|
|
8
12
|
}
|
|
9
13
|
function buildSidebarRows(props) {
|
|
@@ -22,29 +26,29 @@ function buildSidebarRows(props) {
|
|
|
22
26
|
row("agents", props.subagents ? "on" : "off", props.subagents ? "cyan" : "gray"),
|
|
23
27
|
spacer(),
|
|
24
28
|
section("Permissions"),
|
|
25
|
-
row("mode", formatMode(props.agentMode), modeColor(props.agentMode)),
|
|
26
29
|
muted(modeDescription(props.agentMode)),
|
|
27
|
-
row("write", modePermissionLabel(props.agentMode, "write"), permissionColor(props.agentMode)),
|
|
28
|
-
row("shell", modePermissionLabel(props.agentMode, "shell"), permissionColor(props.agentMode)),
|
|
30
|
+
row("write", modePermissionLabel(props.agentMode, "write", props), permissionColor(props.agentMode, props.allowWrite)),
|
|
31
|
+
row("shell", modePermissionLabel(props.agentMode, "shell", props), permissionColor(props.agentMode, props.allowShell)),
|
|
29
32
|
spacer(),
|
|
30
33
|
section("Model"),
|
|
31
34
|
row("provider", props.provider, props.provider === "ollama" ? "green" : "cyan"),
|
|
32
35
|
muted(shortenMiddle(props.model, 28)),
|
|
33
36
|
spacer(),
|
|
34
|
-
section("Host"),
|
|
35
|
-
row("
|
|
37
|
+
section(props.provider === "ollama" ? "Host" : "Route"),
|
|
38
|
+
row("target", shortenMiddle(hostDeviceName, 19), "yellow"),
|
|
36
39
|
row("network", hostNetwork, "green"),
|
|
37
40
|
muted(shortenMiddle(hostRoute, 28)),
|
|
38
|
-
muted(`ver ${hostVersion} models ${hostModels}`),
|
|
39
|
-
muted(`loaded ${shortenMiddle(hostLoaded, 21)}`),
|
|
41
|
+
...(props.provider === "ollama" ? [muted(`ver ${hostVersion} models ${hostModels}`), muted(`loaded ${shortenMiddle(hostLoaded, 21)}`)] : []),
|
|
40
42
|
spacer(),
|
|
41
43
|
section("Workspace"),
|
|
42
44
|
muted(shortenMiddle(props.workspace, 28)),
|
|
43
45
|
spacer(),
|
|
44
|
-
section("
|
|
46
|
+
section("Local machine"),
|
|
45
47
|
muted(`cpu ${props.systemStats.cpuPercent}% mem ${props.systemStats.memoryPercent}%/${props.systemStats.usedMemoryGb}G`),
|
|
46
|
-
muted(`gpu ${formatGpuUtilization(props.gpuStats)} vram ${formatGpuMemory(props.gpuStats)}`),
|
|
47
|
-
muted(`draft ${props.draftTokens} tok`),
|
|
48
|
+
...(props.provider === "ollama" && props.gpuStats ? [muted(`gpu ${formatGpuUtilization(props.gpuStats)} vram ${formatGpuMemory(props.gpuStats)}`)] : []),
|
|
49
|
+
muted(`draft prompt ${props.draftTokens} tok`),
|
|
50
|
+
spacer(),
|
|
51
|
+
section("Model usage"),
|
|
48
52
|
...telemetryRows,
|
|
49
53
|
muted(formatCost(props.sessionTelemetry.estimatedCostUsd)),
|
|
50
54
|
spacer(),
|
|
@@ -73,8 +77,8 @@ function modeColor(agentMode) {
|
|
|
73
77
|
}
|
|
74
78
|
return agentMode === "build" ? "yellow" : "green";
|
|
75
79
|
}
|
|
76
|
-
function permissionColor(agentMode) {
|
|
77
|
-
if (agentMode === "bypass") {
|
|
80
|
+
function permissionColor(agentMode, enabled = false) {
|
|
81
|
+
if (enabled || agentMode === "bypass") {
|
|
78
82
|
return "red";
|
|
79
83
|
}
|
|
80
84
|
return agentMode === "build" ? "yellow" : "gray";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/tui/components/Sidebar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAEpK,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAUnE,MAAM,UAAU,OAAO,CAAC,KAqBvB;IACC,MAAM,
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/tui/components/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
export function StartupBanner(props) {
|
|
4
|
+
if (props.compact) {
|
|
5
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: "PatchPilot" }), _jsx(Text, { color: "gray", children: "Local-first. Permissioned. Easy to review." })] }));
|
|
6
|
+
}
|
|
7
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", children: " ____ _ _ ____ _ _ _ " }), _jsx(Text, { color: "cyan", children: " | _ \\ __ _| |_ ___| |__ | _ \\(_) | ___ | |_ " }), _jsx(Text, { color: "cyan", children: " | |_) / _` | __/ __| '_ \\| |_) | | |/ _ \\| __|" }), _jsx(Text, { color: "cyan", children: " | __/ (_| | || (__| | | | __/| | | (_) | |_ " }), _jsx(Text, { color: "cyan", children: " |_| \\__,_|\\__\\___|_| |_|_| |_|_|\\___/ \\__|" }), _jsx(Text, { color: "gray", children: " " }), _jsx(Text, { color: "cyan", children: " .------. Local-first coding agent" }), _jsx(Text, { color: "cyan", children: " / o o \\ Permissioned tools" }), _jsx(Text, { color: "cyan", children: " | __ | Visible diffs and approvals" }), _jsx(Text, { color: "cyan", children: " | _| |_ |" }), _jsx(Text, { color: "cyan", children: " '._\\____/_.'' [wrench-ready]" }), _jsx(Text, { color: "gray", children: " " }), _jsx(Text, { color: "gray", children: "Start with a task, type /onboarding, or ask what PatchPilot can do." })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=StartupBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StartupBanner.js","sourceRoot":"","sources":["../../../src/tui/components/StartupBanner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,KAE7B;IACC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,iCAAkB,EACzC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,2DAAkD,IAChE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sEAA6D,EAC/E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wEAA6D,EAC/E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wEAA6D,EAC/E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sEAA6D,EAC/E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,2EAA6D,EAC/E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qEAA4D,EAC9E,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gEAAsD,EACxE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wEAA+D,EACjF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,EACjD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,4DAAkD,EACpE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,EAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,oFAA2E,IACzF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { LogLine } from "../types.js";
|
|
3
|
+
import type { AgentTodoItem, AgentWorkState } from "../../core/types.js";
|
|
3
4
|
export declare function Transcript(props: {
|
|
4
5
|
lines: LogLine[];
|
|
5
6
|
isRunning: boolean;
|
|
@@ -7,4 +8,10 @@ export declare function Transcript(props: {
|
|
|
7
8
|
height: number;
|
|
8
9
|
width: number;
|
|
9
10
|
scrollOffset: number;
|
|
11
|
+
todos?: AgentTodoItem[];
|
|
12
|
+
todoFrame?: number;
|
|
13
|
+
verbIndex?: number;
|
|
14
|
+
status: string;
|
|
15
|
+
workState: AgentWorkState;
|
|
16
|
+
isApprovalWaiting?: boolean;
|
|
10
17
|
}): React.ReactElement;
|
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import { toneToColor, toneToMarker } from "../format.js";
|
|
4
|
+
import { formatWorkingStatus } from "../layout.js";
|
|
5
|
+
import { StartupBanner } from "./StartupBanner.js";
|
|
4
6
|
export function Transcript(props) {
|
|
5
|
-
const rows =
|
|
7
|
+
const rows = buildTranscriptRows(props.lines, props.width);
|
|
6
8
|
const visibleRowCount = Math.max(1, props.height - 2);
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const todoRows = buildTodoRows(props.todos ?? [], props.width, props.todoFrame ?? 0);
|
|
10
|
+
const dockRows = buildDockRows({
|
|
11
|
+
isRunning: props.isRunning,
|
|
12
|
+
isApprovalWaiting: Boolean(props.isApprovalWaiting),
|
|
13
|
+
status: props.status,
|
|
14
|
+
workState: props.workState,
|
|
15
|
+
todos: props.todos ?? [],
|
|
16
|
+
width: props.width,
|
|
17
|
+
verbIndex: props.verbIndex ?? 0
|
|
18
|
+
});
|
|
19
|
+
// The todo block and the run/approval dock stay pinned at the bottom; the
|
|
20
|
+
// content region above them flexes to fill whatever is left. The dock is
|
|
21
|
+
// capped so it can never crowd out the transcript on a tiny terminal.
|
|
22
|
+
const auxRows = [...todoRows, ...dockRows];
|
|
23
|
+
const reservedAuxRows = Math.min(auxRows.length, Math.max(0, visibleRowCount - 1));
|
|
24
|
+
const visibleAuxRows = auxRows.slice(0, reservedAuxRows);
|
|
25
|
+
const contentRowCount = Math.max(1, visibleRowCount - reservedAuxRows);
|
|
26
|
+
const hasOverflow = rows.length > contentRowCount;
|
|
27
|
+
const clampedOffset = clampScrollOffset(props.scrollOffset, rows.length, hasOverflow ? contentRowCount - 1 : contentRowCount);
|
|
28
|
+
const contentCapacity = hasOverflow ? Math.max(1, contentRowCount - 1) : contentRowCount;
|
|
29
|
+
const visibleRows = rows.slice(Math.max(0, rows.length - contentCapacity - clampedOffset), rows.length - clampedOffset);
|
|
30
|
+
const showBanner = props.lines.length === 0 && visibleRows.length === 0;
|
|
31
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: props.isActive ? "cyan" : props.isRunning ? "yellow" : "gray", flexDirection: "column", paddingX: 1, height: props.height, overflowY: "hidden", children: [_jsxs(Box, { flexDirection: "column", flexGrow: 1, overflowY: "hidden", children: [showBanner ? (_jsx(StartupBanner, { compact: props.height < 22 || props.width < 92 })) : (visibleRows.map((row, index) => _jsx(TranscriptRowView, { row: row }, `row-${index}`))), hasOverflow ? _jsx(ScrollHint, { offset: clampedOffset, total: rows.length, visible: contentCapacity }) : null] }), visibleAuxRows.length > 0 ? (_jsx(Box, { flexDirection: "column", children: visibleAuxRows.map((row, index) => (_jsx(TranscriptRowView, { row: row }, `aux-${index}`))) })) : null] }));
|
|
12
32
|
}
|
|
13
33
|
function TranscriptRowView(props) {
|
|
14
34
|
return (_jsxs(Box, { children: [_jsx(Box, { width: 3, children: _jsx(Text, { color: props.row.color, dimColor: props.row.dim, children: props.row.marker }) }), _jsx(Box, { width: 14, children: _jsx(Text, { color: props.row.color, bold: props.row.bold, dimColor: props.row.dim, children: props.row.label }) }), _jsx(Text, { color: props.row.color, wrap: "truncate", dimColor: props.row.dim, children: props.row.text })] }));
|
|
@@ -40,7 +60,7 @@ function buildTranscriptRows(lines, width) {
|
|
|
40
60
|
label: "",
|
|
41
61
|
text,
|
|
42
62
|
color: "gray",
|
|
43
|
-
dim:
|
|
63
|
+
dim: false
|
|
44
64
|
})));
|
|
45
65
|
if (detailRows.length > 0) {
|
|
46
66
|
rows.push({
|
|
@@ -53,21 +73,65 @@ function buildTranscriptRows(lines, width) {
|
|
|
53
73
|
return rows;
|
|
54
74
|
});
|
|
55
75
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
76
|
+
function buildTodoRows(todos, width, frame) {
|
|
77
|
+
if (todos.length === 0) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
const textWidth = Math.max(18, width - 19);
|
|
81
|
+
const spinner = ["-", "\\", "|", "/"][frame % 4] ?? "-";
|
|
82
|
+
const rows = [
|
|
58
83
|
{
|
|
59
84
|
marker: "",
|
|
60
|
-
label: "",
|
|
61
|
-
text:
|
|
62
|
-
color: "
|
|
63
|
-
|
|
64
|
-
|
|
85
|
+
label: "todos",
|
|
86
|
+
text: `${todos.filter((todo) => todo.status === "completed").length}/${todos.length} complete`,
|
|
87
|
+
color: "cyan",
|
|
88
|
+
bold: true
|
|
89
|
+
}
|
|
90
|
+
];
|
|
91
|
+
for (const todo of todos.slice(0, 8)) {
|
|
92
|
+
const marker = todo.status === "completed" ? "[x]" : todo.status === "in_progress" ? `[${spinner}]` : "[ ]";
|
|
93
|
+
const color = todo.status === "completed" ? "green" : todo.status === "in_progress" ? "yellow" : "gray";
|
|
94
|
+
rows.push({
|
|
65
95
|
marker: "",
|
|
66
|
-
label:
|
|
96
|
+
label: marker,
|
|
97
|
+
text: truncate(todo.content, textWidth),
|
|
98
|
+
color,
|
|
99
|
+
bold: todo.status === "in_progress",
|
|
100
|
+
dim: todo.status === "pending"
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return rows;
|
|
104
|
+
}
|
|
105
|
+
function buildDockRows(options) {
|
|
106
|
+
const textWidth = Math.max(18, options.width - 19);
|
|
107
|
+
const rows = [];
|
|
108
|
+
if (options.isApprovalWaiting) {
|
|
109
|
+
rows.push({
|
|
110
|
+
marker: "?",
|
|
111
|
+
label: "approval",
|
|
112
|
+
text: "Review the request below. Session approvals are scoped to the concrete target.",
|
|
113
|
+
color: "yellow",
|
|
114
|
+
bold: true
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
if (options.isRunning) {
|
|
118
|
+
rows.push({
|
|
119
|
+
marker: "#",
|
|
120
|
+
label: "run",
|
|
121
|
+
text: truncate(formatWorkingStatus(options.workState, options.verbIndex, options.status), textWidth),
|
|
122
|
+
color: "cyan",
|
|
123
|
+
bold: true
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
if (options.todos.length === 0 && !options.isRunning && !options.isApprovalWaiting) {
|
|
127
|
+
rows.push({
|
|
128
|
+
marker: "",
|
|
129
|
+
label: "ready",
|
|
67
130
|
text: "Ask for a repo summary, a focused patch, or type /help.",
|
|
68
131
|
color: "gray"
|
|
69
|
-
}
|
|
70
|
-
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return rows;
|
|
71
135
|
}
|
|
72
136
|
function markerForBlock(line) {
|
|
73
137
|
switch (line.kind) {
|
|
@@ -118,6 +182,12 @@ function colorForBlock(line) {
|
|
|
118
182
|
function clampScrollOffset(offset, rowCount, visibleRowCount) {
|
|
119
183
|
return Math.max(0, Math.min(offset, Math.max(0, rowCount - visibleRowCount)));
|
|
120
184
|
}
|
|
185
|
+
function truncate(value, width) {
|
|
186
|
+
if (value.length <= width) {
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
return `${value.slice(0, Math.max(0, width - 3))}...`;
|
|
190
|
+
}
|
|
121
191
|
function wrapText(value, width) {
|
|
122
192
|
const rows = value
|
|
123
193
|
.split(/\r?\n/)
|