@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
package/dist/tui/commands.js
CHANGED
|
@@ -19,14 +19,14 @@ export const slashCommands = [
|
|
|
19
19
|
description: "Enable or disable explorer/planner/reviewer subagents.",
|
|
20
20
|
category: "session",
|
|
21
21
|
aliases: ["subagents"],
|
|
22
|
-
detail: "Advisor subagents add short explorer/planner/reviewer briefs before larger workspace tasks.
|
|
22
|
+
detail: "Advisor subagents add short explorer/planner/reviewer briefs before larger workspace tasks. They are off by default; turn them on with /agents on when you want extra review context."
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
name: "provider",
|
|
26
|
-
usage: "/provider ollama|gemini|openrouter|nvidia|codex",
|
|
27
|
-
description: "Switch between Ollama, Gemini, OpenRouter, NVIDIA, and Codex inference.",
|
|
26
|
+
usage: "/provider ollama|gemini|gemini-wrapper|openrouter|nvidia|codex",
|
|
27
|
+
description: "Switch between Ollama, Gemini, Gemini-Wrapper, OpenRouter, NVIDIA, and Codex inference.",
|
|
28
28
|
category: "model",
|
|
29
|
-
detail: "Provider controls where inference runs.
|
|
29
|
+
detail: "Provider controls where inference runs. Gemini-Wrapper runs the installed gemini_webapi bridge with pasted cookies or an explicit local browser-cookie import."
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
name: "think",
|
|
@@ -41,7 +41,7 @@ export const slashCommands = [
|
|
|
41
41
|
usage: "/reasoning low|medium|high|xhigh|adaptive",
|
|
42
42
|
description: "Set provider reasoning effort where the provider supports it.",
|
|
43
43
|
category: "model",
|
|
44
|
-
detail: "Codex supports low, medium, high, and xhigh. OpenRouter receives reasoning.effort for compatible models. Gemini maps xhigh to high. Ollama has no common reasoning-effort API, so the value is ignored there. adaptive chooses effort from task complexity."
|
|
44
|
+
detail: "Codex supports low, medium, high, and xhigh. OpenRouter receives reasoning.effort for compatible models. Gemini maps xhigh to high. Gemini-Wrapper does not expose Gemini Web Denkaufwand controls yet. Ollama has no common reasoning-effort API, so the value is ignored there. adaptive chooses effort from task complexity."
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
name: "onboarding",
|
|
@@ -49,6 +49,61 @@ export const slashCommands = [
|
|
|
49
49
|
description: "Choose provider, configure API key, and select a model.",
|
|
50
50
|
category: "model"
|
|
51
51
|
},
|
|
52
|
+
{
|
|
53
|
+
name: "new",
|
|
54
|
+
usage: "/new",
|
|
55
|
+
description: "Start a fresh PatchPilot session and clear the current context.",
|
|
56
|
+
category: "session",
|
|
57
|
+
detail: "Clears the visible transcript, telemetry, advisor notes, approvals, and starts a new session file. Provider, model, mode, and permissions stay unchanged."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "context",
|
|
61
|
+
usage: "/context show|files|pins|clear|export",
|
|
62
|
+
description: "Inspect and manage saved session context.",
|
|
63
|
+
category: "session",
|
|
64
|
+
aliases: ["ctx"],
|
|
65
|
+
detail: "Use /context show for the dashboard, /context files for path-backed context, /context pins for pinned items, /context clear to drop unpinned context, or /context export to print the snapshot path and JSON."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "context show",
|
|
69
|
+
usage: "/context show",
|
|
70
|
+
description: "Show saved session context counts, pins, tokens, and recent items.",
|
|
71
|
+
category: "session",
|
|
72
|
+
aliases: ["ctx show"],
|
|
73
|
+
detail: "Reads the current session ContextStore snapshot and prints the dashboard used for context-aware follow-up runs."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "context files",
|
|
77
|
+
usage: "/context files",
|
|
78
|
+
description: "List active context entries that point at files, artifacts, or attachments.",
|
|
79
|
+
category: "session",
|
|
80
|
+
aliases: ["ctx files"],
|
|
81
|
+
detail: "Shows active path-backed context so you can see which files or artifacts are still part of the current session memory."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "context pins",
|
|
85
|
+
usage: "/context pins",
|
|
86
|
+
description: "List pinned context items that compaction must keep.",
|
|
87
|
+
category: "session",
|
|
88
|
+
aliases: ["ctx pins", "context pinned"],
|
|
89
|
+
detail: "Pinned context is preserved by /context clear and /compact now. Use this to audit what will remain sticky."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: "context clear",
|
|
93
|
+
usage: "/context clear",
|
|
94
|
+
description: "Drop unpinned saved context for the current session.",
|
|
95
|
+
category: "session",
|
|
96
|
+
aliases: ["ctx clear"],
|
|
97
|
+
detail: "Clears unpinned ContextStore items for this session. Pinned files and other pinned items stay active."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "context export",
|
|
101
|
+
usage: "/context export",
|
|
102
|
+
description: "Print the current context snapshot path and JSON.",
|
|
103
|
+
category: "session",
|
|
104
|
+
aliases: ["ctx export"],
|
|
105
|
+
detail: "Writes or refreshes the current .patchpilot/context snapshot, then prints the path and snapshot JSON for inspection."
|
|
106
|
+
},
|
|
52
107
|
{
|
|
53
108
|
name: "write",
|
|
54
109
|
usage: "/write on|off",
|
|
@@ -124,9 +179,48 @@ export const slashCommands = [
|
|
|
124
179
|
{
|
|
125
180
|
name: "status",
|
|
126
181
|
usage: "/status",
|
|
127
|
-
description: "
|
|
182
|
+
description: "Operational dock: provider/model, permissions, compute target, session, advisors, tool counters.",
|
|
128
183
|
category: "session"
|
|
129
184
|
},
|
|
185
|
+
{
|
|
186
|
+
name: "usage",
|
|
187
|
+
usage: "/usage",
|
|
188
|
+
description: "Show detailed token, tool-call, cache, and cost counters.",
|
|
189
|
+
category: "session",
|
|
190
|
+
detail: "Shows current-session request counts, input/output/cache tokens, tool counters by name, and estimated cost/savings. If exact model pricing is unavailable, PatchPilot marks the figure as fallback-priced."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "compact",
|
|
194
|
+
usage: "/compact now|auto|reset",
|
|
195
|
+
description: "Run or configure session-context compaction.",
|
|
196
|
+
category: "session",
|
|
197
|
+
aliases: ["compress"],
|
|
198
|
+
detail: "Use /compact now to compact eligible unpinned context, /compact auto [on|off] to toggle automatic compaction, or /compact reset to drop generated summaries and turn auto-compaction off."
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: "compact now",
|
|
202
|
+
usage: "/compact now",
|
|
203
|
+
description: "Compact eligible unpinned context immediately.",
|
|
204
|
+
category: "session",
|
|
205
|
+
aliases: ["compress now"],
|
|
206
|
+
detail: "Pinned context and exact referenced file/artifact paths are kept. Secret-like context is dropped rather than summarized."
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: "compact auto",
|
|
210
|
+
usage: "/compact auto [on|off]",
|
|
211
|
+
description: "Toggle automatic ContextStore compaction.",
|
|
212
|
+
category: "session",
|
|
213
|
+
aliases: ["compress auto"],
|
|
214
|
+
detail: "Without on/off, /compact auto enables automatic compaction. Use /compact auto off to disable it."
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: "compact reset",
|
|
218
|
+
usage: "/compact reset",
|
|
219
|
+
description: "Drop generated context summaries and disable automatic compaction.",
|
|
220
|
+
category: "session",
|
|
221
|
+
aliases: ["compress reset"],
|
|
222
|
+
detail: "Leaves regular and pinned context items in place, but marks generated summary items as dropped and turns automatic compaction off."
|
|
223
|
+
},
|
|
130
224
|
{
|
|
131
225
|
name: "sessions",
|
|
132
226
|
usage: "/sessions",
|
|
@@ -159,9 +253,38 @@ export const slashCommands = [
|
|
|
159
253
|
},
|
|
160
254
|
{
|
|
161
255
|
name: "doctor",
|
|
162
|
-
usage: "/doctor",
|
|
256
|
+
usage: "/doctor [fix]",
|
|
163
257
|
description: "Check Node, Git, and active provider diagnostics.",
|
|
164
|
-
category: "utility"
|
|
258
|
+
category: "utility",
|
|
259
|
+
detail: "/doctor checks requirements without changing the machine. /doctor fix applies safe repairs such as installing the managed Gemini-API bridge."
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
name: "cleanup",
|
|
263
|
+
usage: "/cleanup cache|sessions|temp|all",
|
|
264
|
+
description: "Clean PatchPilot cache, saved sessions, temp files, or all workspace state.",
|
|
265
|
+
category: "utility",
|
|
266
|
+
detail: "Use cache/temp for safe cleanup. sessions/all delete saved workspace transcripts and start a fresh session."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: "experimental",
|
|
270
|
+
usage: "/experimental [file-analysis|memory|subagents|shell-metacharacters] [on|off]",
|
|
271
|
+
description: "Open or update experimental feature toggles.",
|
|
272
|
+
category: "utility",
|
|
273
|
+
detail: "Run /experimental to open the checkbox menu. Use space to toggle file-analysis, memory, subagents, and shell-metacharacters."
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: "theme",
|
|
277
|
+
usage: "/theme [new|legacy]",
|
|
278
|
+
description: "Switch between the New experimental shell and the Legacy TUI.",
|
|
279
|
+
category: "utility",
|
|
280
|
+
detail: "Run /theme to open the picker, or /theme new / /theme legacy directly. New is the default fullscreen shell; Legacy is the original sidebar TUI. The choice is remembered."
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
name: "init",
|
|
284
|
+
usage: "/init",
|
|
285
|
+
description: "Create PATCHPILOT.md workspace instructions.",
|
|
286
|
+
category: "utility",
|
|
287
|
+
detail: "Creates a PATCHPILOT.md file similar to AGENTS.md or CLAUDE.md and ensures .patchpilot/ stays ignored."
|
|
165
288
|
},
|
|
166
289
|
{
|
|
167
290
|
name: "clear",
|
|
@@ -181,10 +304,19 @@ export function filterSlashCommands(input) {
|
|
|
181
304
|
if (!input.startsWith("/")) {
|
|
182
305
|
return [];
|
|
183
306
|
}
|
|
184
|
-
const
|
|
307
|
+
const normalizedInput = input.slice(1).trimStart().replace(/\s+/g, " ").toLowerCase();
|
|
308
|
+
const commandPart = normalizedInput.split(/\s+/)[0] ?? "";
|
|
185
309
|
if (!commandPart) {
|
|
186
310
|
return slashCommands;
|
|
187
311
|
}
|
|
312
|
+
const fullPrefixMatches = slashCommands.filter((command) => command.name.startsWith(normalizedInput));
|
|
313
|
+
const fullAliasPrefixMatches = slashCommands.filter((command) => command.aliases?.some((alias) => alias.startsWith(normalizedInput)));
|
|
314
|
+
if (fullPrefixMatches.length > 0) {
|
|
315
|
+
return [...fullPrefixMatches, ...fullAliasPrefixMatches.filter((command) => !fullPrefixMatches.includes(command))];
|
|
316
|
+
}
|
|
317
|
+
if (fullAliasPrefixMatches.length > 0) {
|
|
318
|
+
return fullAliasPrefixMatches;
|
|
319
|
+
}
|
|
188
320
|
const prefixMatches = slashCommands.filter((command) => command.name.startsWith(commandPart));
|
|
189
321
|
const aliasPrefixMatches = slashCommands.filter((command) => command.aliases?.some((alias) => alias.startsWith(commandPart)));
|
|
190
322
|
if (prefixMatches.length > 0) {
|
package/dist/tui/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/tui/commands.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,2GAA2G;KACpH;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,CAAC,OAAO,CAAC;KACnB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/tui/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,21 @@ export function ApprovalPanel(props) {
|
|
|
11
11
|
if (!request) {
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
|
-
return (_jsxs(Box, { borderStyle: "double", borderColor: "yellow", flexDirection: "column", paddingX: 1, marginTop: 1, height:
|
|
14
|
+
return (_jsxs(Box, { borderStyle: "double", borderColor: "yellow", flexDirection: "column", paddingX: 1, marginTop: 1, height: 6, overflowY: "hidden", children: [_jsxs(Text, { color: "yellow", bold: true, children: ["ACTION REQUIRED ", request.tool, " needs ", request.permission, " approval"] }), _jsxs(Text, { color: "gray", children: ["risk ", request.risk, " scope allow-session applies only to this tool", request.bypassable === false ? " bypass cannot skip this" : ""] }), _jsxs(Text, { color: "white", bold: true, wrap: "wrap", children: [request.preview, " ", formatApprovalTarget(request.arguments)] }), _jsx(Text, { color: "cyan", bold: true, children: "Press [y] allow once [a] allow session [n/Esc] deny" })] }));
|
|
15
|
+
}
|
|
16
|
+
function formatApprovalTarget(argumentsValue) {
|
|
17
|
+
const pathValue = typeof argumentsValue.path === "string" ? argumentsValue.path : "";
|
|
18
|
+
const commandValue = typeof argumentsValue.command === "string" ? argumentsValue.command : "";
|
|
19
|
+
const scriptValue = typeof argumentsValue.script === "string" ? argumentsValue.script : "";
|
|
20
|
+
if (pathValue) {
|
|
21
|
+
return `target ${pathValue}`;
|
|
22
|
+
}
|
|
23
|
+
if (scriptValue) {
|
|
24
|
+
return `script ${scriptValue}`;
|
|
25
|
+
}
|
|
26
|
+
if (commandValue) {
|
|
27
|
+
return `command ${commandValue}`;
|
|
28
|
+
}
|
|
29
|
+
return "";
|
|
15
30
|
}
|
|
16
31
|
//# sourceMappingURL=ApprovalPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApprovalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ApprovalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,CACP,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aACzH,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,sDAEf,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,mGAAoF,EAC5G,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qFAAsE,IACzF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5H,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,wCACL,OAAO,CAAC,IAAI,aAAS,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"ApprovalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ApprovalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,CACP,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aACzH,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,sDAEf,EACL,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,mGAAoF,EAC5G,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qFAAsE,IACzF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,aAC5H,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,wCACL,OAAO,CAAC,IAAI,aAAS,OAAO,CAAC,UAAU,iBACpD,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBACV,OAAO,CAAC,IAAI,qDAAiD,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAC7H,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,QAAC,IAAI,EAAC,MAAM,aACjC,OAAO,CAAC,OAAO,OAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,IACrD,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,4EAA6D,IAChF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,cAAuC;IACnE,MAAM,SAAS,GAAG,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,WAAW,GAAG,OAAO,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,UAAU,SAAS,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,UAAU,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,WAAW,YAAY,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,12 +1,40 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
export function CommandSuggestions(props) {
|
|
4
4
|
if (props.items.length === 0) {
|
|
5
5
|
return null;
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const maxRows = 8;
|
|
8
|
+
const startIndex = Math.max(0, Math.min(props.selectedIndex - Math.floor(maxRows / 2), Math.max(0, props.items.length - maxRows)));
|
|
9
|
+
const visibleItems = props.items.slice(startIndex, startIndex + maxRows);
|
|
10
|
+
const endIndex = startIndex + visibleItems.length;
|
|
11
|
+
const selectedItem = props.items[props.selectedIndex] ?? props.items[0];
|
|
12
|
+
const hasPreview = Boolean(selectedItem);
|
|
13
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: "cyan", flexDirection: "column", paddingX: 1, height: Math.min(maxRows, props.items.length) + (hasPreview ? 7 : 4), overflowY: "hidden", children: [_jsxs(Text, { color: "gray", children: ["Command palette use up/down to pick, Enter to apply, Escape to clear. ", startIndex + 1, "-", endIndex, "/", props.items.length] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Commands" }), _jsx(Text, { color: "gray", children: " grouped by category" })] }), visibleItems.map((item, index) => {
|
|
14
|
+
const absoluteIndex = startIndex + index;
|
|
15
|
+
const isSelected = absoluteIndex === props.selectedIndex;
|
|
16
|
+
return (_jsxs(Box, { marginTop: index === 0 ? 1 : 0, children: [_jsx(Box, { width: 2, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", children: isSelected ? ">" : " " }) }), _jsx(Box, { width: 13, children: _jsx(Text, { color: isSelected ? "cyan" : "gray", bold: isSelected, children: formatCategory(item.category) }) }), _jsx(Box, { width: 32, children: _jsx(Text, { color: isSelected ? "white" : "cyan", bold: isSelected, wrap: "truncate", children: item.label }) }), _jsxs(Text, { color: isSelected ? "white" : "gray", wrap: "truncate", children: [item.detail, item.hint ? ` ${item.hint}` : ""] })] }, item.key));
|
|
17
|
+
}), selectedItem ? (_jsxs(Box, { marginTop: 1, borderStyle: "single", borderColor: "gray", paddingX: 1, flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: selectedItem.label }), _jsx(Text, { color: "white", wrap: "truncate", children: selectedItem.detail }), _jsx(Text, { color: "gray", wrap: "truncate", children: selectedItem.hint ?? previewForCommand(selectedItem) })] })) : null] }));
|
|
18
|
+
}
|
|
19
|
+
function formatCategory(category) {
|
|
20
|
+
return category.length > 11 ? category.slice(0, 11) : category;
|
|
21
|
+
}
|
|
22
|
+
function previewForCommand(item) {
|
|
23
|
+
if (item.label.startsWith("/models") || item.label.startsWith("/model")) {
|
|
24
|
+
return "Preview: load provider models, filter by query, then select.";
|
|
25
|
+
}
|
|
26
|
+
if (item.label.startsWith("/sessions") || item.label.startsWith("/resume")) {
|
|
27
|
+
return "Preview: inspect saved workspace session history.";
|
|
28
|
+
}
|
|
29
|
+
if (item.label.startsWith("/connect") || item.label.startsWith("/hosts")) {
|
|
30
|
+
return "Preview: choose local, LAN, Tailscale, or manual Ollama host.";
|
|
31
|
+
}
|
|
32
|
+
if (item.label.startsWith("/doctor")) {
|
|
33
|
+
return "Preview: check runtime, git, provider auth, and bridge setup.";
|
|
34
|
+
}
|
|
35
|
+
if (item.label.startsWith("/experimental")) {
|
|
36
|
+
return "Preview: toggle file analysis, memory, and subagent features.";
|
|
37
|
+
}
|
|
38
|
+
return `Preview: ${item.category} command`;
|
|
11
39
|
}
|
|
12
40
|
//# sourceMappingURL=CommandSuggestions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandSuggestions.js","sourceRoot":"","sources":["../../../src/tui/components/CommandSuggestions.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAUhC,MAAM,UAAU,kBAAkB,CAAC,KAGlC;IACC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"CommandSuggestions.js","sourceRoot":"","sources":["../../../src/tui/components/CommandSuggestions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import type { AgentWorkState } from "../../core/types.js";
|
|
2
3
|
export declare function Composer(props: {
|
|
3
4
|
input: string;
|
|
4
5
|
isRunning: boolean;
|
|
5
6
|
isApprovalWaiting?: boolean;
|
|
6
7
|
status: string;
|
|
8
|
+
workState: AgentWorkState;
|
|
7
9
|
draftTokens: number;
|
|
10
|
+
width: number;
|
|
8
11
|
mask?: string;
|
|
9
12
|
onChange: (value: string) => void;
|
|
10
13
|
onSubmit: (value: string) => void;
|
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
|
-
import { Box, Text } from "ink";
|
|
4
|
-
import
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
import { computeComposerLayout } from "../layout.js";
|
|
5
|
+
import { randomRunStatusSeed, runStatusParts } from "../runStatus.js";
|
|
5
6
|
export function Composer(props) {
|
|
6
7
|
const [frameIndex, setFrameIndex] = useState(0);
|
|
7
8
|
const [runningSince, setRunningSince] = useState(null);
|
|
9
|
+
const [verbSeed, setVerbSeed] = useState(() => randomRunStatusSeed());
|
|
10
|
+
const prompt = props.isApprovalWaiting ? "input > " : props.isRunning ? "run > " : "patch > ";
|
|
11
|
+
const layout = computeComposerLayout({
|
|
12
|
+
input: props.input,
|
|
13
|
+
width: props.width,
|
|
14
|
+
promptWidth: prompt.length
|
|
15
|
+
});
|
|
8
16
|
useEffect(() => {
|
|
9
17
|
if (!props.isRunning) {
|
|
10
18
|
setRunningSince(null);
|
|
11
19
|
setFrameIndex(0);
|
|
12
20
|
return;
|
|
13
21
|
}
|
|
14
|
-
setRunningSince((currentValue) =>
|
|
22
|
+
setRunningSince((currentValue) => {
|
|
23
|
+
if (currentValue === null) {
|
|
24
|
+
setVerbSeed(randomRunStatusSeed());
|
|
25
|
+
return Date.now();
|
|
26
|
+
}
|
|
27
|
+
return currentValue;
|
|
28
|
+
});
|
|
15
29
|
const timer = setInterval(() => {
|
|
16
30
|
setFrameIndex((currentValue) => (currentValue + 1) % spinnerFrames.length);
|
|
17
31
|
}, 120);
|
|
@@ -19,11 +33,49 @@ export function Composer(props) {
|
|
|
19
33
|
clearInterval(timer);
|
|
20
34
|
};
|
|
21
35
|
}, [props.isRunning]);
|
|
36
|
+
useInput((inputValue, key) => {
|
|
37
|
+
if (props.isRunning || props.isApprovalWaiting) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (key.return) {
|
|
41
|
+
if (key.shift || key.meta || key.super) {
|
|
42
|
+
props.onChange(`${props.input}\n`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
props.onSubmit(props.input);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (key.backspace || key.delete) {
|
|
49
|
+
props.onChange(props.input.slice(0, -1));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (key.tab || key.escape || key.upArrow || key.downArrow || key.leftArrow || key.rightArrow || key.pageUp || key.pageDown || key.home || key.end) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (key.ctrl || inputValue.length === 0) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
props.onChange(`${props.input}${inputValue}`);
|
|
59
|
+
}, {
|
|
60
|
+
isActive: !props.isRunning && !props.isApprovalWaiting
|
|
61
|
+
});
|
|
22
62
|
const elapsedSeconds = runningSince ? Math.max(0, Math.floor((Date.now() - runningSince) / 1000)) : 0;
|
|
23
|
-
|
|
63
|
+
const runStatus = runStatusParts({
|
|
64
|
+
workState: props.workState,
|
|
65
|
+
status: props.status,
|
|
66
|
+
elapsedMs: elapsedSeconds * 1000,
|
|
67
|
+
seed: verbSeed
|
|
68
|
+
});
|
|
69
|
+
const renderedRows = props.mask ? layout.visibleRows.map((row) => props.mask?.repeat(row.length) ?? row) : layout.visibleRows;
|
|
70
|
+
const placeholder = props.input.length === 0 ? "Ask PatchPilot or type /help..." : "";
|
|
71
|
+
return (_jsxs(Box, { flexDirection: "column", height: layout.height, overflowY: "hidden", children: [_jsx(Box, { height: layout.editorRows, flexDirection: "column", children: props.isApprovalWaiting || props.isRunning ? (_jsxs(Box, { height: 1, children: [_jsx(Text, { color: props.isApprovalWaiting ? "yellow" : "cyan", children: prompt }), props.isApprovalWaiting ? (_jsx(Text, { color: "yellow", children: "approval waiting" })) : (_jsxs(Text, { color: "yellow", children: [spinnerFrames[frameIndex], " ", runStatus.verb, " \u00B7 ", runStatus.state, runStatus.detail ? ` · ${runStatus.detail}` : "", _jsx(Text, { color: "gray", children: elapsedSeconds > 0 ? ` ${elapsedSeconds}s` : " starting" })] }))] })) : renderedRows.map((row, index) => {
|
|
72
|
+
const isLastRow = index === renderedRows.length - 1;
|
|
73
|
+
const text = row || (isLastRow ? placeholder : "");
|
|
74
|
+
return (_jsxs(Box, { height: 1, children: [_jsx(Text, { color: "cyan", children: index === 0 ? prompt : " ".repeat(prompt.length) }), _jsxs(Text, { color: placeholder && isLastRow ? "gray" : "white", children: [text, isLastRow ? _jsx(Text, { inverse: true, children: " " }) : null] })] }, `composer-row-${index}`));
|
|
75
|
+
}) }), _jsx(Text, { color: "gray", wrap: "truncate", children: props.isApprovalWaiting ? "Approval waiting: press y once, a session, or n deny." : props.isRunning ? "Input is locked while the current run is active." : `prompt ${props.draftTokens} tok est${layout.hiddenRows > 0 ? ` ${layout.hiddenRows} earlier draft line${layout.hiddenRows === 1 ? "" : "s"}` : ""} Enter sends Shift/Meta+Enter newline` })] }));
|
|
24
76
|
}
|
|
25
77
|
export function FooterHints(props) {
|
|
26
78
|
return (_jsx(Box, { height: 1, overflowY: "hidden", children: _jsxs(Text, { color: "gray", children: ["tab plan/build/bypass | pane ", props.activePane, " | left/right pane | pgup/pgdn scroll | / starts palette"] }) }));
|
|
27
79
|
}
|
|
28
|
-
const spinnerFrames = ["
|
|
80
|
+
const spinnerFrames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
29
81
|
//# sourceMappingURL=Composer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/tui/components/Composer.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../src/tui/components/Composer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type ExperimentalFlag = "fileAnalysis" | "memory" | "subagents" | "shellMetacharacters";
|
|
3
|
+
export type ExperimentalFlags = Record<ExperimentalFlag, boolean>;
|
|
4
|
+
export declare function ExperimentalPanel(props: {
|
|
5
|
+
flags: ExperimentalFlags;
|
|
6
|
+
selectedIndex: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}): React.ReactElement;
|
|
9
|
+
export declare function experimentalFlagAt(index: number): ExperimentalFlag;
|
|
10
|
+
export declare function experimentalFlagCount(): number;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
const experimentalRows = [
|
|
4
|
+
{
|
|
5
|
+
key: "fileAnalysis",
|
|
6
|
+
label: "File Analysis",
|
|
7
|
+
description: "Allow image, PDF, DOCX, Markdown, and external-file inspection once provider plumbing is available."
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
key: "memory",
|
|
11
|
+
label: "Memory",
|
|
12
|
+
description: "Enable the upcoming SQLite/vector memory layer for durable project/user notes."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
key: "subagents",
|
|
16
|
+
label: "Subagents",
|
|
17
|
+
description: "Enable explorer, planner, and reviewer advisors for larger workspace tasks."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
key: "shellMetacharacters",
|
|
21
|
+
label: "Shell Metachars",
|
|
22
|
+
description: "Allow pipes, &&, and ; in run_shell. Redirects and expansion still ask even in bypass."
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
export function ExperimentalPanel(props) {
|
|
26
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: "cyan", flexDirection: "column", paddingX: 2, height: props.height, overflowY: "hidden", children: [_jsx(Text, { color: "cyan", bold: true, children: "PatchPilot Experimental" }), _jsx(Text, { color: "white", children: "Use up/down to move, Space to toggle, Enter or Escape to close." }), _jsx(Box, { flexDirection: "column", marginTop: 2, children: experimentalRows.map((row, index) => {
|
|
27
|
+
const selected = index === props.selectedIndex;
|
|
28
|
+
const enabled = props.flags[row.key];
|
|
29
|
+
return (_jsxs(Box, { marginTop: index === 0 ? 0 : 1, children: [_jsx(Box, { width: 3, children: _jsx(Text, { color: selected ? "cyan" : "gray", children: selected ? ">" : " " }) }), _jsx(Box, { width: 5, children: _jsx(Text, { color: enabled ? "green" : "gray", children: enabled ? "[x]" : "[ ]" }) }), _jsx(Box, { width: 18, children: _jsx(Text, { color: selected ? "white" : "cyan", bold: selected, children: row.label }) }), _jsx(Text, { color: selected ? "white" : "gray", children: row.description })] }, row.key));
|
|
30
|
+
}) })] }));
|
|
31
|
+
}
|
|
32
|
+
export function experimentalFlagAt(index) {
|
|
33
|
+
return experimentalRows[Math.max(0, Math.min(index, experimentalRows.length - 1))]?.key ?? "fileAnalysis";
|
|
34
|
+
}
|
|
35
|
+
export function experimentalFlagCount() {
|
|
36
|
+
return experimentalRows.length;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ExperimentalPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExperimentalPanel.js","sourceRoot":"","sources":["../../../src/tui/components/ExperimentalPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAMhC,MAAM,gBAAgB,GAIjB;IACH;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,qGAAqG;KACnH;IACD;QACE,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,gFAAgF;KAC9F;IACD;QACE,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,6EAA6E;KAC3F;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,wFAAwF;KACtG;CACF,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAIjC;IACC,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAC,QAAQ,aACtH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,8CAEhB,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,gFAAuE,EAC1F,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YACrC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBACnC,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,aAAa,CAAC;oBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrC,OAAO,CACL,MAAC,GAAG,IAAe,SAAS,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAC/C,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GAClE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,YACX,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAQ,GACrE,EACN,KAAC,GAAG,IAAC,KAAK,EAAE,EAAE,YACZ,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,YACrD,GAAG,CAAC,KAAK,GACL,GACH,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YAAG,GAAG,CAAC,WAAW,GAAQ,KAZ1D,GAAG,CAAC,GAAG,CAaX,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,cAAc,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACjC,CAAC"}
|
|
@@ -6,7 +6,7 @@ export function Header(props) {
|
|
|
6
6
|
const modelHint = getModelHint(props.model);
|
|
7
7
|
const stateColor = workStateColor(props.workState);
|
|
8
8
|
const hostLabel = props.provider === "ollama" ? props.activeHost?.host.deviceName ?? "ollama" : `${props.provider} api`;
|
|
9
|
-
return (_jsxs(Box, { borderStyle: "round", borderColor: stateColor, flexDirection: "column", marginBottom: 1, paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { color: "cyan", bold: true, children: ["PatchPilot ", _jsx(Text, { color: "gray", children: "agent workspace" })] }), _jsx(Text, { color: stateColor, children: formatWorkState(props.workState) })] }), _jsxs(Text, { color: modelHint.color, wrap: "truncate", children: [props.provider, "/", shortenMiddle(props.model, 34), " ", _jsx(Text, { color: "gray", children: "on" }), " ", shortenMiddle(hostLabel, 20), " ", _jsx(Text, { color: "gray", children: "mode" }), " ", _jsx(Text, { color: modeColor(props.agentMode), children: formatMode(props.agentMode) }), " ", _jsx(Text, { color: "gray", children: "write" }), " ", _jsx(Text, { color: permissionColor(props.agentMode), children: modePermissionLabel(props.agentMode, "write") }), " ", _jsx(Text, { color: "gray", children: "shell" }), " ", _jsx(Text, { color: permissionColor(props.agentMode), children: modePermissionLabel(props.agentMode, "shell") })] }), _jsxs(Text, { color: "gray", wrap: "truncate", children: [shortenMiddle(props.status, 58), " ", formatSessionTokens(props.sessionTelemetry), " ", formatCost(props.sessionTelemetry.estimatedCostUsd), " ", formatSpeed(props.telemetry), " ", formatLatency(props.telemetry)] })] }));
|
|
9
|
+
return (_jsxs(Box, { borderStyle: "round", borderColor: stateColor, flexDirection: "column", marginBottom: 1, paddingX: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { color: "cyan", bold: true, children: ["PatchPilot ", _jsx(Text, { color: "gray", children: "agent workspace" })] }), _jsx(Text, { color: stateColor, children: formatWorkState(props.workState) })] }), _jsxs(Text, { color: modelHint.color, wrap: "truncate", children: [props.provider, "/", shortenMiddle(props.model, 34), " ", _jsx(Text, { color: "gray", children: "on" }), " ", shortenMiddle(hostLabel, 20), " ", _jsx(Text, { color: "gray", children: "mode" }), " ", _jsx(Text, { color: modeColor(props.agentMode), children: formatMode(props.agentMode) }), " ", _jsx(Text, { color: "gray", children: "write" }), " ", _jsx(Text, { color: permissionColor(props.agentMode, props.allowWrite), children: modePermissionLabel(props.agentMode, "write", props) }), " ", _jsx(Text, { color: "gray", children: "shell" }), " ", _jsx(Text, { color: permissionColor(props.agentMode, props.allowShell), children: modePermissionLabel(props.agentMode, "shell", props) })] }), _jsxs(Text, { color: "gray", wrap: "truncate", children: [shortenMiddle(props.status, 58), " ", formatSessionTokens(props.sessionTelemetry), " ", formatCost(props.sessionTelemetry.estimatedCostUsd), " ", formatSpeed(props.telemetry), " ", formatLatency(props.telemetry)] })] }));
|
|
10
10
|
}
|
|
11
11
|
function formatMode(agentMode) {
|
|
12
12
|
return agentMode === "bypass" ? "build+bypass" : agentMode;
|
|
@@ -17,8 +17,8 @@ function modeColor(agentMode) {
|
|
|
17
17
|
}
|
|
18
18
|
return agentMode === "build" ? "yellow" : "green";
|
|
19
19
|
}
|
|
20
|
-
function permissionColor(agentMode) {
|
|
21
|
-
if (agentMode === "bypass") {
|
|
20
|
+
function permissionColor(agentMode, enabled = false) {
|
|
21
|
+
if (enabled || agentMode === "bypass") {
|
|
22
22
|
return "red";
|
|
23
23
|
}
|
|
24
24
|
return agentMode === "build" ? "yellow" : "gray";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAEvI,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,UAAU,MAAM,CAAC,KAmBtB;IACC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,MAAM,CAAC;IAExH,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aACnG,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,aACjC,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,kCACV,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gCAAuB,IAC/C,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,GAAQ,IAC9D,EACN,MAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAC,UAAU,aAC1C,KAAK,CAAC,QAAQ,OAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAU,OAAE,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,OAAE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,qBAAY,EAAC,GAAG,EAChJ,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,YAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAQ,EAAC,GAAG,EACjF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,OAAC,KAAC,IAAI,IAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,YAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAQ,EAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"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"}
|