@jx-grxf/patchpilot 0.3.0 → 0.3.1-beta
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/README.md +3 -0
- package/dist/core/agent.d.ts +1 -0
- package/dist/core/agent.js +33 -6
- package/dist/core/agent.js.map +1 -1
- package/dist/core/workspace.js +16 -16
- package/dist/core/workspace.js.map +1 -1
- package/dist/tui/App.js +80 -24
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/commands.js +8 -2
- package/dist/tui/commands.js.map +1 -1
- package/dist/tui/components/Composer.js +1 -1
- package/dist/tui/components/Composer.js.map +1 -1
- package/dist/tui/components/Header.js +17 -1
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/Sidebar.js +21 -4
- package/dist/tui/components/Sidebar.js.map +1 -1
- package/dist/tui/modes.d.ts +10 -0
- package/dist/tui/modes.js +37 -0
- package/dist/tui/modes.js.map +1 -0
- package/dist/tui/types.d.ts +1 -1
- package/docs/releases/v0.3.1-beta.md +19 -0
- package/package.json +1 -1
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import { formatCost, formatLatency, formatSessionTokens, formatSpeed, getModelHint, shortenMiddle } from "../format.js";
|
|
4
|
+
import { modePermissionLabel } from "../modes.js";
|
|
4
5
|
export function Header(props) {
|
|
5
6
|
const modelHint = getModelHint(props.model);
|
|
6
7
|
const stateColor = workStateColor(props.workState);
|
|
7
8
|
const hostLabel = props.provider === "ollama" ? props.activeHost?.host.deviceName ?? "ollama" : `${props.provider} api`;
|
|
8
|
-
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: props.agentMode
|
|
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)] })] }));
|
|
10
|
+
}
|
|
11
|
+
function formatMode(agentMode) {
|
|
12
|
+
return agentMode === "bypass" ? "build+bypass" : agentMode;
|
|
13
|
+
}
|
|
14
|
+
function modeColor(agentMode) {
|
|
15
|
+
if (agentMode === "bypass") {
|
|
16
|
+
return "red";
|
|
17
|
+
}
|
|
18
|
+
return agentMode === "build" ? "yellow" : "green";
|
|
19
|
+
}
|
|
20
|
+
function permissionColor(agentMode) {
|
|
21
|
+
if (agentMode === "bypass") {
|
|
22
|
+
return "red";
|
|
23
|
+
}
|
|
24
|
+
return agentMode === "build" ? "yellow" : "gray";
|
|
9
25
|
}
|
|
10
26
|
function formatWorkState(workState) {
|
|
11
27
|
return workState.replace(/_/g, " ");
|
|
@@ -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;
|
|
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,EACzI,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,IAChI,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,aAC/B,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,QAAI,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAI,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,OAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,IAClM,IACH,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,SAAoB;IACtC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,SAAoB;IACrC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,SAAoB;IAC3C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,SAAyB;IAChD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,SAAyB;IAC/C,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,KAAK,kBAAkB,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import { formatCost, formatGpuMemory, formatGpuUtilization, formatOllamaHost, formatSessionTokens, formatTokens, shortenMiddle } from "../format.js";
|
|
4
|
+
import { modeDescription, modePermissionLabel } from "../modes.js";
|
|
4
5
|
export function Sidebar(props) {
|
|
5
6
|
const rows = buildSidebarRows(props);
|
|
6
7
|
const visibleRowCount = Math.max(1, props.height - 2);
|
|
@@ -20,14 +21,15 @@ function buildSidebarRows(props) {
|
|
|
20
21
|
const rows = [
|
|
21
22
|
section("Session"),
|
|
22
23
|
row("state", props.workState.replace(/_/g, " "), props.workState === "error" ? "red" : props.workState === "waiting_approval" ? "yellow" : "green"),
|
|
23
|
-
row("mode", props.agentMode, props.agentMode
|
|
24
|
+
row("mode", formatMode(props.agentMode), modeColor(props.agentMode)),
|
|
24
25
|
row("session", shortenMiddle(props.sessionId, 18), "cyan"),
|
|
25
26
|
row("agents", props.subagents ? "on" : "off", props.subagents ? "cyan" : "gray"),
|
|
26
27
|
spacer(),
|
|
27
28
|
section("Permissions"),
|
|
28
|
-
row("mode", props.agentMode, props.agentMode
|
|
29
|
-
|
|
30
|
-
row("
|
|
29
|
+
row("mode", formatMode(props.agentMode), modeColor(props.agentMode)),
|
|
30
|
+
muted(modeDescription(props.agentMode)),
|
|
31
|
+
row("write", modePermissionLabel(props.agentMode, "write"), permissionColor(props.agentMode)),
|
|
32
|
+
row("shell", modePermissionLabel(props.agentMode, "shell"), permissionColor(props.agentMode)),
|
|
31
33
|
spacer(),
|
|
32
34
|
section("Model"),
|
|
33
35
|
row("provider", props.provider, props.provider === "ollama" ? "green" : "cyan"),
|
|
@@ -68,6 +70,21 @@ function buildSidebarRows(props) {
|
|
|
68
70
|
}
|
|
69
71
|
return rows;
|
|
70
72
|
}
|
|
73
|
+
function formatMode(agentMode) {
|
|
74
|
+
return agentMode === "bypass" ? "build+bypass" : agentMode;
|
|
75
|
+
}
|
|
76
|
+
function modeColor(agentMode) {
|
|
77
|
+
if (agentMode === "bypass") {
|
|
78
|
+
return "red";
|
|
79
|
+
}
|
|
80
|
+
return agentMode === "build" ? "yellow" : "green";
|
|
81
|
+
}
|
|
82
|
+
function permissionColor(agentMode) {
|
|
83
|
+
if (agentMode === "bypass") {
|
|
84
|
+
return "red";
|
|
85
|
+
}
|
|
86
|
+
return agentMode === "build" ? "yellow" : "gray";
|
|
87
|
+
}
|
|
71
88
|
function section(text) {
|
|
72
89
|
return {
|
|
73
90
|
text,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/tui/components/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentMode } from "./types.js";
|
|
2
|
+
export type ModePermissions = {
|
|
3
|
+
allowWrite: boolean;
|
|
4
|
+
allowShell: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function initialAgentMode(permissions: ModePermissions): AgentMode;
|
|
7
|
+
export declare function nextAgentMode(currentMode: AgentMode): AgentMode;
|
|
8
|
+
export declare function permissionsForMode(mode: AgentMode): ModePermissions;
|
|
9
|
+
export declare function modePermissionLabel(mode: AgentMode, permission: "write" | "shell"): string;
|
|
10
|
+
export declare function modeDescription(mode: AgentMode): string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function initialAgentMode(permissions) {
|
|
2
|
+
return permissions.allowWrite || permissions.allowShell ? "bypass" : "plan";
|
|
3
|
+
}
|
|
4
|
+
export function nextAgentMode(currentMode) {
|
|
5
|
+
if (currentMode === "plan") {
|
|
6
|
+
return "build";
|
|
7
|
+
}
|
|
8
|
+
if (currentMode === "build") {
|
|
9
|
+
return "bypass";
|
|
10
|
+
}
|
|
11
|
+
return "plan";
|
|
12
|
+
}
|
|
13
|
+
export function permissionsForMode(mode) {
|
|
14
|
+
return {
|
|
15
|
+
allowWrite: mode === "bypass",
|
|
16
|
+
allowShell: mode === "bypass"
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function modePermissionLabel(mode, permission) {
|
|
20
|
+
if (mode === "plan") {
|
|
21
|
+
return "off";
|
|
22
|
+
}
|
|
23
|
+
if (mode === "build") {
|
|
24
|
+
return "approval";
|
|
25
|
+
}
|
|
26
|
+
return permission === "write" ? "on" : "on";
|
|
27
|
+
}
|
|
28
|
+
export function modeDescription(mode) {
|
|
29
|
+
if (mode === "plan") {
|
|
30
|
+
return "plan mode is read-only";
|
|
31
|
+
}
|
|
32
|
+
if (mode === "build") {
|
|
33
|
+
return "build mode can edit after approval";
|
|
34
|
+
}
|
|
35
|
+
return "build + bypass runs writes and shell without per-tool approval";
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/tui/modes.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAC,WAA4B;IAC3D,OAAO,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAsB;IAClD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAe;IAChD,OAAO;QACL,UAAU,EAAE,IAAI,KAAK,QAAQ;QAC7B,UAAU,EAAE,IAAI,KAAK,QAAQ;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAe,EAAE,UAA6B;IAChF,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAe;IAC7C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IAED,OAAO,gEAAgE,CAAC;AAC1E,CAAC"}
|
package/dist/tui/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentToolName, AgentWorkState, SubagentRole, ToolCategory } from "../core/types.js";
|
|
2
|
-
export type AgentMode = "plan" | "build";
|
|
2
|
+
export type AgentMode = "plan" | "build" | "bypass";
|
|
3
3
|
export type LogTone = "muted" | "normal" | "success" | "warning" | "danger" | "accent";
|
|
4
4
|
export type TranscriptBlockKind = "user" | "assistant" | "tool" | "diff" | "approval" | "error" | "final" | "status";
|
|
5
5
|
export type LogLine = {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# PatchPilot v0.3.1-beta
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- Clarifies the agent mode model: `plan` is read-only, `build` is approval-gated, and `build+bypass` is an explicit trusted-workspace mode.
|
|
6
|
+
- Adds a third Tab state for `build+bypass` with an in-TUI disclaimer that must be accepted before write and shell permissions are enabled.
|
|
7
|
+
- Keeps prerelease npm publishing on the `beta` dist-tag so stable installs remain on the latest stable release.
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
|
|
11
|
+
- Stops `build` mode from looking identical to `plan` by making approval-gated editing the visible behavior.
|
|
12
|
+
- Prevents accidental bypass activation from a normal mode toggle; users must explicitly accept the warning.
|
|
13
|
+
- Marks beta GitHub releases as prereleases and reads release notes from `docs/releases/<tag>.md`.
|
|
14
|
+
|
|
15
|
+
## Improved
|
|
16
|
+
|
|
17
|
+
- Header and sidebar now show `off`, `approval`, or `on` permissions based on the active mode instead of mixing mode and permission state.
|
|
18
|
+
- Slash commands document `/mode bypass` and `/bypass` as explicit advanced controls.
|
|
19
|
+
- Website-facing install flow can point users to the npm package instead of only GitHub assets.
|