@jx-grxf/patchpilot 0.2.1 → 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.
Files changed (69) hide show
  1. package/README.md +70 -10
  2. package/SECURITY.md +20 -0
  3. package/dist/cli.js +52 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/agent.d.ts +6 -2
  6. package/dist/core/agent.js +197 -27
  7. package/dist/core/agent.js.map +1 -1
  8. package/dist/core/codex.js +1 -1
  9. package/dist/core/codex.js.map +1 -1
  10. package/dist/core/gemini.js +8 -21
  11. package/dist/core/gemini.js.map +1 -1
  12. package/dist/core/http.d.ts +6 -0
  13. package/dist/core/http.js +45 -0
  14. package/dist/core/http.js.map +1 -0
  15. package/dist/core/json.js +9 -0
  16. package/dist/core/json.js.map +1 -1
  17. package/dist/core/nvidia.js +9 -2
  18. package/dist/core/nvidia.js.map +1 -1
  19. package/dist/core/ollama.js +8 -1
  20. package/dist/core/ollama.js.map +1 -1
  21. package/dist/core/openrouter.js +13 -8
  22. package/dist/core/openrouter.js.map +1 -1
  23. package/dist/core/reasoning.d.ts +12 -0
  24. package/dist/core/reasoning.js +108 -0
  25. package/dist/core/reasoning.js.map +1 -0
  26. package/dist/core/session.d.ts +31 -0
  27. package/dist/core/session.js +154 -0
  28. package/dist/core/session.js.map +1 -0
  29. package/dist/core/types.d.ts +103 -2
  30. package/dist/core/workspace.d.ts +17 -1
  31. package/dist/core/workspace.js +498 -16
  32. package/dist/core/workspace.js.map +1 -1
  33. package/dist/tui/App.js +368 -109
  34. package/dist/tui/App.js.map +1 -1
  35. package/dist/tui/commands.js +45 -4
  36. package/dist/tui/commands.js.map +1 -1
  37. package/dist/tui/components/Composer.js +1 -1
  38. package/dist/tui/components/Composer.js.map +1 -1
  39. package/dist/tui/components/Header.d.ts +2 -2
  40. package/dist/tui/components/Header.js +32 -53
  41. package/dist/tui/components/Header.js.map +1 -1
  42. package/dist/tui/components/OnboardingPanel.d.ts +5 -0
  43. package/dist/tui/components/OnboardingPanel.js +11 -13
  44. package/dist/tui/components/OnboardingPanel.js.map +1 -1
  45. package/dist/tui/components/Sidebar.d.ts +6 -1
  46. package/dist/tui/components/Sidebar.js +33 -7
  47. package/dist/tui/components/Sidebar.js.map +1 -1
  48. package/dist/tui/components/Transcript.js +57 -8
  49. package/dist/tui/components/Transcript.js.map +1 -1
  50. package/dist/tui/hosts.js +7 -1
  51. package/dist/tui/hosts.js.map +1 -1
  52. package/dist/tui/modelSelection.d.ts +1 -0
  53. package/dist/tui/modelSelection.js +29 -0
  54. package/dist/tui/modelSelection.js.map +1 -0
  55. package/dist/tui/modes.d.ts +10 -0
  56. package/dist/tui/modes.js +37 -0
  57. package/dist/tui/modes.js.map +1 -0
  58. package/dist/tui/types.d.ts +13 -3
  59. package/dist/tui/types.js.map +1 -1
  60. package/docs/releases/v0.1.0.md +26 -0
  61. package/docs/releases/v0.2.0.md +21 -0
  62. package/docs/releases/v0.2.1.md +26 -0
  63. package/docs/releases/v0.3.0.md +26 -0
  64. package/docs/releases/v0.3.1-beta.md +19 -0
  65. package/docs/showcase/patchpilot-showcase.svg +83 -38
  66. package/package.json +5 -2
  67. package/dist/tui/inputRouting.d.ts +0 -8
  68. package/dist/tui/inputRouting.js +0 -94
  69. package/dist/tui/inputRouting.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ # PatchPilot v0.2.0
2
+
3
+ ## Highlights
4
+
5
+ - Public npm packaging for `@jx-grxf/patchpilot`.
6
+ - Expanded provider routes for Ollama, Gemini, OpenRouter, NVIDIA, and Codex.
7
+ - Release automation for tagged GitHub releases and package verification.
8
+
9
+ ## Fixed
10
+
11
+ - Added the missing Gemini API-key header for model discovery so `/models` can list Gemini models with configured credentials.
12
+ - Tightened package contents so published installs use built `dist` output plus public docs and license files.
13
+
14
+ ## Improved
15
+
16
+ - README now documents the public install path, provider routes, remote Ollama workflow, and permission model.
17
+ - CI verifies typecheck, tests, build, audit, and package dry-run before release work.
18
+
19
+ ## Pull Requests
20
+
21
+ - #6 `feat/public-npm-readiness`
@@ -0,0 +1,26 @@
1
+ # PatchPilot v0.2.1
2
+
3
+ ## Highlights
4
+
5
+ - Version alignment release for the npm package and CLI surface.
6
+ - Provider reasoning behavior now respects model-specific support instead of assuming every route can enable or disable reasoning the same way.
7
+ - Agent tools gained safe read-only helpers for Git status and package scripts.
8
+
9
+ ## Fixed
10
+
11
+ - CLI version is read from `package.json`, preventing stale hardcoded `patchpilot --version` output.
12
+ - Onboarding clears secret input before model search, preventing API keys from appearing in an unmasked picker.
13
+ - Provider calls now use explicit timeouts and retry only safe discovery requests.
14
+ - `/mode plan` no longer permanently loses previously enabled build permissions.
15
+ - Onboarding errors are shown in the setup panel instead of being hidden in the transcript.
16
+
17
+ ## Improved
18
+
19
+ - `/models` and `/connect` keep interactive palette context after loading options.
20
+ - Reasoning handling is provider-aware for Gemini Thinking, OpenRouter reasoning, Ollama `think`, NVIDIA GPT-OSS reasoning effort, and Codex.
21
+ - Shell tool validation blocks destructive simple commands such as forced removes, risky Git mutations, and npm publication commands.
22
+ - LAN discovery allows private `172.16.0.0/12` prefixes while avoiding common Docker bridge prefixes.
23
+
24
+ ## Pull Requests
25
+
26
+ - Pending PR from `feat/deep-dive-fixes`.
@@ -0,0 +1,26 @@
1
+ # PatchPilot v0.3.0
2
+
3
+ ## Highlights
4
+
5
+ - Adds the first agentic session layer: typed work states, append-only session logs, `/sessions`, `/resume`, and matching CLI commands.
6
+ - Introduces structured tool metadata and new workspace tools for line-range reads, file info, Git diffs, changed files, patch application, scripts, and tests.
7
+ - Adds approval prompts for risky write, script, test, and shell actions when global permissions are not enabled.
8
+ - Reworks the TUI toward a calmer agent surface with a compact header, control-center sidebar, and typed transcript blocks.
9
+ - Updates the showcase image to reflect the v0.3 terminal UI.
10
+
11
+ ## Fixed
12
+
13
+ - Prevents stale `dist/` files from leaking into npm packages by cleaning before builds.
14
+ - Keeps `.patchpilot/` session logs out of Git and normal workspace search results.
15
+ - Aligns public docs with the actual approval and safe-patch workflow.
16
+
17
+ ## Improved
18
+
19
+ - Release automation now publishes the npm package during tagged releases, using `NPM_TOKEN` when configured and npm trusted publishing/OIDC otherwise.
20
+ - `npm pack --dry-run` verifies a clean package artifact without obsolete build output.
21
+ - Session summaries are indexed globally for faster workspace resume flows.
22
+
23
+ ## Pull Requests
24
+
25
+ - #7 Provider hardening, onboarding safety, and public docs.
26
+ - #8 v0.3 agent session and approval slice.
@@ -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.
@@ -1,39 +1,84 @@
1
- <svg width="920" height="520" viewBox="0 0 920 520" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="title desc">
2
- <title id="title">PatchPilot TUI showcase</title>
3
- <desc id="desc">A stylized terminal interface for the PatchPilot local coding agent.</desc>
4
- <rect width="920" height="520" rx="28" fill="#0B1020"/>
5
- <rect x="32" y="32" width="856" height="456" rx="18" fill="#111827" stroke="#334155"/>
6
- <rect x="32" y="32" width="856" height="48" rx="18" fill="#172033"/>
7
- <circle cx="60" cy="56" r="7" fill="#EF4444"/>
8
- <circle cx="84" cy="56" r="7" fill="#F59E0B"/>
9
- <circle cx="108" cy="56" r="7" fill="#22C55E"/>
10
- <text x="138" y="62" fill="#E5E7EB" font-family="Consolas, Menlo, monospace" font-size="18" font-weight="700">PatchPilot</text>
11
- <rect x="704" y="45" width="146" height="24" rx="12" fill="#0F766E"/>
12
- <text x="724" y="62" fill="#CCFBF1" font-family="Consolas, Menlo, monospace" font-size="13">qwen2.5-coder</text>
13
-
14
- <rect x="56" y="104" width="228" height="338" rx="12" fill="#0F172A" stroke="#334155"/>
15
- <text x="76" y="134" fill="#38BDF8" font-family="Consolas, Menlo, monospace" font-size="14" font-weight="700">Workspace</text>
16
- <text x="76" y="166" fill="#CBD5E1" font-family="Consolas, Menlo, monospace" font-size="13">src/core/agent.ts</text>
17
- <text x="76" y="194" fill="#CBD5E1" font-family="Consolas, Menlo, monospace" font-size="13">src/core/tools.ts</text>
18
- <text x="76" y="222" fill="#CBD5E1" font-family="Consolas, Menlo, monospace" font-size="13">src/tui/App.tsx</text>
19
- <text x="76" y="250" fill="#94A3B8" font-family="Consolas, Menlo, monospace" font-size="13">tests/parser.test.ts</text>
20
- <rect x="76" y="290" width="168" height="30" rx="8" fill="#1E293B"/>
21
- <text x="94" y="311" fill="#A7F3D0" font-family="Consolas, Menlo, monospace" font-size="13">write: disabled</text>
22
- <rect x="76" y="332" width="168" height="30" rx="8" fill="#1E293B"/>
23
- <text x="94" y="353" fill="#FDE68A" font-family="Consolas, Menlo, monospace" font-size="13">shell: ask first</text>
24
-
25
- <rect x="308" y="104" width="556" height="338" rx="12" fill="#020617" stroke="#334155"/>
26
- <text x="332" y="136" fill="#F8FAFC" font-family="Consolas, Menlo, monospace" font-size="15" font-weight="700">Agent transcript</text>
27
- <text x="332" y="174" fill="#94A3B8" font-family="Consolas, Menlo, monospace" font-size="13">user</text>
28
- <text x="390" y="174" fill="#E5E7EB" font-family="Consolas, Menlo, monospace" font-size="13">add parser tests and explain the diff</text>
29
- <text x="332" y="216" fill="#38BDF8" font-family="Consolas, Menlo, monospace" font-size="13">pilot</text>
30
- <text x="390" y="216" fill="#CBD5E1" font-family="Consolas, Menlo, monospace" font-size="13">reading parser and current tests...</text>
31
- <rect x="332" y="244" width="492" height="42" rx="10" fill="#111827"/>
32
- <text x="354" y="270" fill="#A7F3D0" font-family="Consolas, Menlo, monospace" font-size="13">tool read_file src/core/json.ts</text>
33
- <rect x="332" y="302" width="492" height="42" rx="10" fill="#111827"/>
34
- <text x="354" y="328" fill="#FDE68A" font-family="Consolas, Menlo, monospace" font-size="13">tool write_file denied: run with --apply</text>
35
- <rect x="332" y="364" width="492" height="42" rx="10" fill="#111827"/>
36
- <text x="354" y="390" fill="#C4B5FD" font-family="Consolas, Menlo, monospace" font-size="13">final review the proposed patch before commit</text>
37
- <rect x="56" y="456" width="808" height="1" fill="#334155"/>
38
- <text x="56" y="476" fill="#64748B" font-family="Consolas, Menlo, monospace" font-size="12">local model, visible tools, explicit permissions</text>
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">&gt;</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 &gt;</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.2.1",
3
+ "version": "0.3.1-beta",
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",
@@ -1,8 +0,0 @@
1
- export type LocalConversationResult = {
2
- handled: true;
3
- tone: "accent" | "warning";
4
- message: string;
5
- } | {
6
- handled: false;
7
- };
8
- export declare function routeLocalConversation(task: string, now?: Date): LocalConversationResult;
@@ -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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"}