@jx-grxf/patchpilot 0.2.1 → 0.3.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/README.md +67 -10
- package/SECURITY.md +20 -0
- package/dist/cli.js +52 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/agent.d.ts +5 -2
- package/dist/core/agent.js +167 -24
- package/dist/core/agent.js.map +1 -1
- package/dist/core/codex.js +1 -1
- package/dist/core/codex.js.map +1 -1
- package/dist/core/gemini.js +8 -21
- package/dist/core/gemini.js.map +1 -1
- package/dist/core/http.d.ts +6 -0
- package/dist/core/http.js +45 -0
- package/dist/core/http.js.map +1 -0
- package/dist/core/json.js +9 -0
- package/dist/core/json.js.map +1 -1
- package/dist/core/nvidia.js +9 -2
- package/dist/core/nvidia.js.map +1 -1
- package/dist/core/ollama.js +8 -1
- package/dist/core/ollama.js.map +1 -1
- package/dist/core/openrouter.js +13 -8
- package/dist/core/openrouter.js.map +1 -1
- package/dist/core/reasoning.d.ts +12 -0
- package/dist/core/reasoning.js +108 -0
- package/dist/core/reasoning.js.map +1 -0
- package/dist/core/session.d.ts +31 -0
- package/dist/core/session.js +154 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/types.d.ts +103 -2
- package/dist/core/workspace.d.ts +17 -1
- package/dist/core/workspace.js +495 -13
- package/dist/core/workspace.js.map +1 -1
- package/dist/tui/App.js +291 -88
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/commands.js +37 -2
- package/dist/tui/commands.js.map +1 -1
- package/dist/tui/components/Header.d.ts +2 -2
- package/dist/tui/components/Header.js +17 -54
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/OnboardingPanel.d.ts +5 -0
- package/dist/tui/components/OnboardingPanel.js +11 -13
- package/dist/tui/components/OnboardingPanel.js.map +1 -1
- package/dist/tui/components/Sidebar.d.ts +6 -1
- package/dist/tui/components/Sidebar.js +15 -6
- package/dist/tui/components/Sidebar.js.map +1 -1
- package/dist/tui/components/Transcript.js +57 -8
- package/dist/tui/components/Transcript.js.map +1 -1
- package/dist/tui/hosts.js +7 -1
- package/dist/tui/hosts.js.map +1 -1
- package/dist/tui/modelSelection.d.ts +1 -0
- package/dist/tui/modelSelection.js +29 -0
- package/dist/tui/modelSelection.js.map +1 -0
- package/dist/tui/types.d.ts +12 -2
- package/dist/tui/types.js.map +1 -1
- package/docs/releases/v0.1.0.md +26 -0
- package/docs/releases/v0.2.0.md +21 -0
- package/docs/releases/v0.2.1.md +26 -0
- package/docs/releases/v0.3.0.md +26 -0
- package/docs/showcase/patchpilot-showcase.svg +83 -38
- package/package.json +5 -2
- package/dist/tui/inputRouting.d.ts +0 -8
- package/dist/tui/inputRouting.js +0 -94
- package/dist/tui/inputRouting.js.map +0 -1
|
@@ -1,39 +1,84 @@
|
|
|
1
|
-
<svg width="
|
|
2
|
-
<title id="title">PatchPilot
|
|
3
|
-
<desc id="desc">
|
|
4
|
-
<rect width="
|
|
5
|
-
<rect x="
|
|
6
|
-
<
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
<text x="
|
|
11
|
-
<
|
|
12
|
-
<text x="
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
<text x="
|
|
16
|
-
<text x="
|
|
17
|
-
|
|
18
|
-
<
|
|
19
|
-
<text x="
|
|
20
|
-
<
|
|
21
|
-
<text x="
|
|
22
|
-
<
|
|
23
|
-
<text x="
|
|
24
|
-
|
|
25
|
-
<
|
|
26
|
-
<text x="
|
|
27
|
-
<text x="
|
|
28
|
-
|
|
29
|
-
<text x="
|
|
30
|
-
<text x="
|
|
31
|
-
<
|
|
32
|
-
<text x="
|
|
33
|
-
<
|
|
34
|
-
<text x="
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
<text x="
|
|
1
|
+
<svg width="2048" height="1024" viewBox="0 0 2048 1024" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">PatchPilot v0.3 terminal showcase</title>
|
|
3
|
+
<desc id="desc">PatchPilot terminal interface with a calm header, session sidebar, approval permissions, Gemini provider, and typed transcript blocks.</desc>
|
|
4
|
+
<rect width="2048" height="1024" fill="#1F2636"/>
|
|
5
|
+
<rect x="22" y="17" width="2004" height="88" rx="2" fill="#202739" stroke="#6CB36F" stroke-width="1.5"/>
|
|
6
|
+
<text x="37" y="43" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">gemini/gemini-3.1-flash-lite-preview</text>
|
|
7
|
+
<text x="397" y="43" fill="#708296" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">on</text>
|
|
8
|
+
<text x="429" y="43" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">gemini api</text>
|
|
9
|
+
<text x="528" y="43" fill="#5C6E83" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">mode</text>
|
|
10
|
+
<text x="581" y="43" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">plan</text>
|
|
11
|
+
<text x="631" y="43" fill="#5C6E83" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">write</text>
|
|
12
|
+
<text x="692" y="43" fill="#5C6E83" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">approval</text>
|
|
13
|
+
<text x="785" y="43" fill="#5C6E83" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">shell</text>
|
|
14
|
+
<text x="846" y="43" fill="#5C6E83" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">approval</text>
|
|
15
|
+
<text x="1973" y="43" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" text-anchor="end">idle</text>
|
|
16
|
+
<text x="37" y="66" fill="#546A80" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">idle 1 req 2472 in/160 out - 49.6 tok/s 1.2s</text>
|
|
17
|
+
|
|
18
|
+
<rect x="22" y="149" width="304" height="836" rx="2" fill="#202739" stroke="#4B627A" stroke-width="1.2"/>
|
|
19
|
+
<text x="37" y="176" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Session</text>
|
|
20
|
+
<text x="37" y="198" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">state</text>
|
|
21
|
+
<text x="125" y="198" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">idle</text>
|
|
22
|
+
<text x="37" y="220" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">mode</text>
|
|
23
|
+
<text x="125" y="220" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">plan</text>
|
|
24
|
+
<text x="37" y="242" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">session</text>
|
|
25
|
+
<text x="125" y="242" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">20260516...-019fgk</text>
|
|
26
|
+
<text x="37" y="264" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">agents</text>
|
|
27
|
+
<text x="125" y="264" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">on</text>
|
|
28
|
+
|
|
29
|
+
<text x="37" y="286" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Permissions</text>
|
|
30
|
+
<text x="37" y="308" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">mode</text>
|
|
31
|
+
<text x="125" y="308" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">plan</text>
|
|
32
|
+
<text x="37" y="330" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">write</text>
|
|
33
|
+
<text x="125" y="330" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">approval</text>
|
|
34
|
+
<text x="37" y="352" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">shell</text>
|
|
35
|
+
<text x="125" y="352" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">approval</text>
|
|
36
|
+
|
|
37
|
+
<text x="37" y="374" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Model</text>
|
|
38
|
+
<text x="37" y="396" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">provider</text>
|
|
39
|
+
<text x="125" y="396" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">gemini</text>
|
|
40
|
+
<text x="37" y="418" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">gemini-3.1-f...lite-preview</text>
|
|
41
|
+
|
|
42
|
+
<text x="37" y="440" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Host</text>
|
|
43
|
+
<text x="37" y="462" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">device</text>
|
|
44
|
+
<text x="125" y="462" fill="#E3C95C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">gemini api</text>
|
|
45
|
+
<text x="37" y="484" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">network</text>
|
|
46
|
+
<text x="125" y="484" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">cloud</text>
|
|
47
|
+
<text x="37" y="506" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">gemini cloud</text>
|
|
48
|
+
<text x="37" y="528" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">version -</text>
|
|
49
|
+
<text x="37" y="550" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">models -</text>
|
|
50
|
+
<text x="37" y="572" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">loaded idle</text>
|
|
51
|
+
|
|
52
|
+
<text x="37" y="594" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Workspace</text>
|
|
53
|
+
<text x="37" y="616" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">/Users/johann...s/PatchPilot</text>
|
|
54
|
+
|
|
55
|
+
<text x="37" y="638" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Runtime</text>
|
|
56
|
+
<text x="37" y="660" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">cpu 22% mem 99%/7.9G</text>
|
|
57
|
+
<text x="37" y="682" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">gpu - vram -</text>
|
|
58
|
+
<text x="37" y="704" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">draft 0 tok</text>
|
|
59
|
+
<text x="37" y="726" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">2472 in/160 out/2632 total</text>
|
|
60
|
+
<text x="37" y="748" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">1 req 2472 in/160 out</text>
|
|
61
|
+
<text x="37" y="770" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">-</text>
|
|
62
|
+
|
|
63
|
+
<text x="37" y="792" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">Advisors</text>
|
|
64
|
+
<text x="37" y="814" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">No advisor output yet.</text>
|
|
65
|
+
|
|
66
|
+
<rect x="344" y="149" width="1682" height="836" rx="2" fill="#202739" stroke="#6BDCE4" stroke-width="1.3"/>
|
|
67
|
+
<text x="359" y="176" fill="#E9EEF5" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">></text>
|
|
68
|
+
<text x="389" y="176" fill="#E9EEF5" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">you</text>
|
|
69
|
+
<text x="525" y="176" fill="#E9EEF5" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">Hey, whats up?</text>
|
|
70
|
+
|
|
71
|
+
<text x="359" y="198" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">-</text>
|
|
72
|
+
<text x="389" y="198" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">planning</text>
|
|
73
|
+
<text x="525" y="198" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">thinking step 1/8</text>
|
|
74
|
+
<text x="525" y="220" fill="#28364A" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">state planning</text>
|
|
75
|
+
|
|
76
|
+
<text x="359" y="242" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">=</text>
|
|
77
|
+
<text x="389" y="242" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17" font-weight="700">final</text>
|
|
78
|
+
<text x="525" y="242" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">Not much! Just hanging out in the terminal, ready to help you with your code. I'm PatchPilot, your local-first coding agent. How can I help you with</text>
|
|
79
|
+
<text x="525" y="264" fill="#73BC75" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">the workspace today?</text>
|
|
80
|
+
<text x="525" y="286" fill="#28364A" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">state done</text>
|
|
81
|
+
|
|
82
|
+
<text x="339" y="1014" fill="#78D2D3" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">patch ></text>
|
|
83
|
+
<text x="426" y="1014" fill="#52677C" font-family="SFMono-Regular, Menlo, Consolas, monospace" font-size="17">Ask PatchPilot or type /help...</text>
|
|
39
84
|
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jx-grxf/patchpilot",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Local-first coding agent TUI for visible, permissioned repo changes.",
|
|
6
6
|
"type": "module",
|
|
@@ -10,8 +10,10 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
12
|
".env.example",
|
|
13
|
+
"docs/releases",
|
|
13
14
|
"docs/showcase/patchpilot-showcase.svg",
|
|
14
15
|
"README.md",
|
|
16
|
+
"SECURITY.md",
|
|
15
17
|
"LICENSE"
|
|
16
18
|
],
|
|
17
19
|
"publishConfig": {
|
|
@@ -26,8 +28,9 @@
|
|
|
26
28
|
},
|
|
27
29
|
"homepage": "https://github.com/jx-grxf/PatchPilot#readme",
|
|
28
30
|
"scripts": {
|
|
31
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
29
32
|
"dev": "tsx src/cli.tsx",
|
|
30
|
-
"build": "tsc",
|
|
33
|
+
"build": "npm run clean && tsc",
|
|
31
34
|
"prepack": "npm run build",
|
|
32
35
|
"prepublishOnly": "npm run typecheck && npm test && npm run build && npm audit --omit=dev --audit-level=moderate && npm pack --dry-run",
|
|
33
36
|
"start": "node dist/cli.js",
|
package/dist/tui/inputRouting.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
export function routeLocalConversation(task, now = new Date()) {
|
|
2
|
-
const normalizedTask = task.trim().toLowerCase();
|
|
3
|
-
const plainTask = normalizedTask.replace(/[!?.\s]/g, "");
|
|
4
|
-
if (["hi", "hey", "hello", "hallo", "servus", "yo", "moin"].includes(plainTask)) {
|
|
5
|
-
return {
|
|
6
|
-
handled: true,
|
|
7
|
-
tone: "accent",
|
|
8
|
-
message: "Bereit. Sag kurz, welches Projektziel ich anfassen soll."
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
if (asksForCurrentTime(normalizedTask)) {
|
|
12
|
-
return {
|
|
13
|
-
handled: true,
|
|
14
|
-
tone: "accent",
|
|
15
|
-
message: `Es ist ${formatLocalTime(now)}.`
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
if (asksHowAreYou(normalizedTask)) {
|
|
19
|
-
return {
|
|
20
|
-
handled: true,
|
|
21
|
-
tone: "accent",
|
|
22
|
-
message: "Läuft. Ich bin bereit für den nächsten PatchPilot-Task."
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
if (["ok", "okay", "nice", "cool", "danke", "thanks", "thx"].includes(plainTask)) {
|
|
26
|
-
return {
|
|
27
|
-
handled: true,
|
|
28
|
-
tone: "accent",
|
|
29
|
-
message: "Passt."
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
const wordCount = task.trim().split(/\s+/).filter(Boolean).length;
|
|
33
|
-
if (wordCount === 1 && looksLikeAmbiguousCodingVerb(plainTask)) {
|
|
34
|
-
return {
|
|
35
|
-
handled: true,
|
|
36
|
-
tone: "warning",
|
|
37
|
-
message: "Was genau soll ich damit machen? Beispiel: `summarize this repository` oder `summarize README.md`."
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
if (wordCount <= 2 && !looksLikeCodingTask(normalizedTask)) {
|
|
41
|
-
return {
|
|
42
|
-
handled: true,
|
|
43
|
-
tone: "warning",
|
|
44
|
-
message: "Zu wenig Kontext für den Agenten. Beispiel: `summarize this repository`, `run tests`, oder `add a diff preview`."
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
handled: false
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function looksLikeCodingTask(value) {
|
|
52
|
-
return /\b(add|build|fix|test|run|read|summarize|explain|refactor|implement|create|update|debug|commit|status|diff|search|find|install|rename|remove|write|edit)\b/.test(value);
|
|
53
|
-
}
|
|
54
|
-
function looksLikeAmbiguousCodingVerb(value) {
|
|
55
|
-
return [
|
|
56
|
-
"add",
|
|
57
|
-
"build",
|
|
58
|
-
"fix",
|
|
59
|
-
"test",
|
|
60
|
-
"run",
|
|
61
|
-
"read",
|
|
62
|
-
"summarize",
|
|
63
|
-
"explain",
|
|
64
|
-
"refactor",
|
|
65
|
-
"implement",
|
|
66
|
-
"create",
|
|
67
|
-
"update",
|
|
68
|
-
"debug",
|
|
69
|
-
"commit",
|
|
70
|
-
"diff",
|
|
71
|
-
"search",
|
|
72
|
-
"find",
|
|
73
|
-
"install",
|
|
74
|
-
"rename",
|
|
75
|
-
"remove",
|
|
76
|
-
"write",
|
|
77
|
-
"edit"
|
|
78
|
-
].includes(value);
|
|
79
|
-
}
|
|
80
|
-
function asksForCurrentTime(value) {
|
|
81
|
-
return /\b(wie spät|uhrzeit|welche uhrzeit|what time|current time|time is it)\b/.test(value);
|
|
82
|
-
}
|
|
83
|
-
function asksHowAreYou(value) {
|
|
84
|
-
return /\b(wie gehts|wie geht es dir|how are you)\b/.test(value);
|
|
85
|
-
}
|
|
86
|
-
function formatLocalTime(value) {
|
|
87
|
-
return new Intl.DateTimeFormat("de-DE", {
|
|
88
|
-
hour: "2-digit",
|
|
89
|
-
minute: "2-digit",
|
|
90
|
-
second: "2-digit",
|
|
91
|
-
timeZoneName: "short"
|
|
92
|
-
}).format(value);
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=inputRouting.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inputRouting.js","sourceRoot":"","sources":["../../src/tui/inputRouting.ts"],"names":[],"mappings":"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"}
|