hugpy-harness 0.1.3__tar.gz
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.
- hugpy_harness-0.1.3/PKG-INFO +114 -0
- hugpy_harness-0.1.3/README.md +106 -0
- hugpy_harness-0.1.3/hugpy_harness/LICENSE +41 -0
- hugpy_harness-0.1.3/hugpy_harness/PROVENANCE.md +37 -0
- hugpy_harness-0.1.3/hugpy_harness/__init__.py +1 -0
- hugpy_harness-0.1.3/hugpy_harness/adapter.py +495 -0
- hugpy_harness-0.1.3/hugpy_harness/audit.py +111 -0
- hugpy_harness-0.1.3/hugpy_harness/branding.py +218 -0
- hugpy_harness-0.1.3/hugpy_harness/cli/__init__.py +0 -0
- hugpy_harness-0.1.3/hugpy_harness/cli/chat.py +134 -0
- hugpy_harness-0.1.3/hugpy_harness/cli/tui.py +90 -0
- hugpy_harness-0.1.3/hugpy_harness/comms.py +18 -0
- hugpy_harness-0.1.3/hugpy_harness/config.py +189 -0
- hugpy_harness-0.1.3/hugpy_harness/gateway.py +696 -0
- hugpy_harness-0.1.3/hugpy_harness/journal.py +307 -0
- hugpy_harness-0.1.3/hugpy_harness/loop.py +901 -0
- hugpy_harness-0.1.3/hugpy_harness/memory.py +51 -0
- hugpy_harness-0.1.3/hugpy_harness/policy.py +80 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/__init__.py +19 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/abstract_claude.py +7 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/abstract_serve.py +439 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/base.py +185 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/http.py +80 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/hugpy_serve.py +283 -0
- hugpy_harness-0.1.3/hugpy_harness/serve_client/wrapper.py +223 -0
- hugpy_harness-0.1.3/hugpy_harness/tools/__init__.py +156 -0
- hugpy_harness-0.1.3/hugpy_harness/tools/fs.py +114 -0
- hugpy_harness-0.1.3/hugpy_harness/tools/portable.py +108 -0
- hugpy_harness-0.1.3/hugpy_harness/tools/shell.py +56 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/__init__.py +56 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/app.py +1741 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/diag.py +167 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/discovery.py +75 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/layout.py +54 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/loci.py +255 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/output.py +101 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/state.py +649 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/toolcalls.py +305 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/__init__.py +1 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/composer.py +161 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/modals.py +259 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/panels.py +281 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/resources.py +141 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/text.py +75 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/theme.py +50 -0
- hugpy_harness-0.1.3/hugpy_harness/tui/views/transcript.py +189 -0
- hugpy_harness-0.1.3/hugpy_harness.egg-info/PKG-INFO +114 -0
- hugpy_harness-0.1.3/hugpy_harness.egg-info/SOURCES.txt +53 -0
- hugpy_harness-0.1.3/hugpy_harness.egg-info/dependency_links.txt +1 -0
- hugpy_harness-0.1.3/hugpy_harness.egg-info/entry_points.txt +3 -0
- hugpy_harness-0.1.3/hugpy_harness.egg-info/requires.txt +1 -0
- hugpy_harness-0.1.3/hugpy_harness.egg-info/top_level.txt +1 -0
- hugpy_harness-0.1.3/pyproject.toml +22 -0
- hugpy_harness-0.1.3/setup.cfg +4 -0
- hugpy_harness-0.1.3/tests/test_portable_tools.py +124 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hugpy-harness
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: Optional standalone terminal chat and agent harness for a Hugpy wrapper or fleet
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: hugpy-tools>=0.2.7
|
|
8
|
+
|
|
9
|
+
# Hugpy Harness
|
|
10
|
+
|
|
11
|
+
Connect to either a standalone wrapper or a basic Core fleet endpoint with
|
|
12
|
+
`hugpy-harness --base http://host:port`. The harness displays fleet resource
|
|
13
|
+
snapshots per worker, including stale/offline state. Conversations remain in the
|
|
14
|
+
same local workspace journal when changing endpoints.
|
|
15
|
+
|
|
16
|
+
Optional standalone terminal interface for a local or remote Hugpy wrapper.
|
|
17
|
+
No dependency on hugpy-agent or the hugpy-wrapper Python package. Communication
|
|
18
|
+
uses HTTP; no background service, engine installation or worker enrollment.
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
Build with `bash packaging/debian/build.sh`. The output directory contains the
|
|
23
|
+
harness `.deb`, a separate wrapper `.deb` when its local build is available,
|
|
24
|
+
and `install.sh`. Distribute these together for installation without an APT
|
|
25
|
+
repository (system Python packages must still be available).
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
cd build/debian
|
|
29
|
+
./install.sh # missing local wrapper: prompt [Y/n]
|
|
30
|
+
./install.sh --yes # default yes without prompts
|
|
31
|
+
./install.sh --without-wrapper # harness only, e.g. remote wrapper
|
|
32
|
+
./install.sh --dry-run # show APT plan without changing packages
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
A compatible installed wrapper is reused. The installer checks all required
|
|
36
|
+
local package files before calling APT. Noninteractive default is yes; use
|
|
37
|
+
`--without-wrapper` explicitly for a remote-only client.
|
|
38
|
+
|
|
39
|
+
The `.deb` declares the wrapper as `Recommends`, so standard APT installations
|
|
40
|
+
include it by default when a repository provides it. It is optional, not a
|
|
41
|
+
hard dependency. For the current local release use `install.sh`, which passes
|
|
42
|
+
the separate wrapper package to APT when needed. Alternatively:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
sudo apt install ./hugpy-wrapper_0.1.62_all.deb ./hugpy-harness_0.1.1_all.deb
|
|
46
|
+
sudo apt install --no-install-recommends ./hugpy-harness_0.1.1_all.deb
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The harness runtime is `/opt/hugpy-harness/venv`; the wrapper retains its own
|
|
50
|
+
runtime and service. Neither package embeds the other. Installing the wrapper
|
|
51
|
+
alone does not install the harness.
|
|
52
|
+
|
|
53
|
+
## Launch
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
hugpy-harness
|
|
57
|
+
hugpy-harness launch --workspace /path/to/project
|
|
58
|
+
hugpy-harness --base http://HOST:PORT --workspace /path/to/project
|
|
59
|
+
hugpy-harness chat --model MODEL_ID
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
A local endpoint is discovered from the wrapper endpoint file. Remote access
|
|
63
|
+
uses `--base` and `HUGPY_WRAPPER_API_KEY` when authentication is required.
|
|
64
|
+
`hugpy-chat` is an alias for the plain chat interface. `/model` opens the model
|
|
65
|
+
picker; `/resources` toggles telemetry and `/resources full` opens the monitor.
|
|
66
|
+
|
|
67
|
+
Existing sessions remain in each workspace's `.hugpy_wrapper/chat` directory
|
|
68
|
+
for compatibility. Reopen using the same `--workspace` and `/session`.
|
|
69
|
+
Removal (`sudo apt remove hugpy-harness`) leaves chat history, the wrapper,
|
|
70
|
+
models, and original Hugpy Agent untouched. Purge removes only this package's
|
|
71
|
+
runtime, not workspace data. The wrapper never installs this optional package.
|
|
72
|
+
|
|
73
|
+
Chat accepts plain replies; tools are optional when the request needs them.
|
|
74
|
+
Each user message has its own bounded agent loop. Empty answers and engine
|
|
75
|
+
errors are reported without demanding a tool call.
|
|
76
|
+
|
|
77
|
+
## Model tools
|
|
78
|
+
|
|
79
|
+
The harness imports the standalone `hugpy_tools` catalog. Core file, search,
|
|
80
|
+
text, data, hash, time, and web tools are available automatically in both the
|
|
81
|
+
full-screen interface and plain chat. Schemas reach models through prompted
|
|
82
|
+
tool instructions or native function calling, and results feed back into the
|
|
83
|
+
conversation through the existing journaled loop.
|
|
84
|
+
|
|
85
|
+
Existing `fs_read`, `fs_write`, `fs_glob`, and `shell` calls remain supported.
|
|
86
|
+
The harness keeps its workspace-relative `fs_glob(pattern)` contract when the
|
|
87
|
+
portable catalog contains the same name. File arguments are resolved inside
|
|
88
|
+
`--workspace`; writes, network requests, and host operations use `--policy`
|
|
89
|
+
(`ask` by default). Tools execute on the harness machine, even when the model
|
|
90
|
+
runs on a remote wrapper or fleet.
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
hugpy-harness --workspace /path/to/project
|
|
94
|
+
hugpy-harness chat --workspace /path/to/project --policy readonly
|
|
95
|
+
# Add optional document, media, rendering, image, desktop, and VM tools:
|
|
96
|
+
hugpy-harness --workspace /path/to/project --optional-tools
|
|
97
|
+
hugpy-harness chat --workspace /path/to/project --optional-tools
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Optional tools load their backends only when called. Install the relevant
|
|
101
|
+
`hugpy-tools` extras in the harness environment, for example
|
|
102
|
+
`pip install 'hugpy-tools[images,files,render]'`; rendering also needs Playwright
|
|
103
|
+
Chromium, and desktop/VM tools need the corresponding host software. Missing
|
|
104
|
+
backends return a tool error to the model. Generated image and screenshot
|
|
105
|
+
outputs default to `.hugpy_wrapper/tool-artifacts` inside the workspace.
|
|
106
|
+
|
|
107
|
+
Python installations require `hugpy-tools>=0.2.7`. The Debian build bundles
|
|
108
|
+
the core tools wheel alongside the harness wheel and installs both offline.
|
|
109
|
+
Neither mode requires a Toolserver service. Optional backend dependencies are
|
|
110
|
+
not bundled. To install the unreleased workspace versions together:
|
|
111
|
+
|
|
112
|
+
```sh
|
|
113
|
+
pip install ../hugpy_tools .
|
|
114
|
+
```
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Hugpy Harness
|
|
2
|
+
|
|
3
|
+
Connect to either a standalone wrapper or a basic Core fleet endpoint with
|
|
4
|
+
`hugpy-harness --base http://host:port`. The harness displays fleet resource
|
|
5
|
+
snapshots per worker, including stale/offline state. Conversations remain in the
|
|
6
|
+
same local workspace journal when changing endpoints.
|
|
7
|
+
|
|
8
|
+
Optional standalone terminal interface for a local or remote Hugpy wrapper.
|
|
9
|
+
No dependency on hugpy-agent or the hugpy-wrapper Python package. Communication
|
|
10
|
+
uses HTTP; no background service, engine installation or worker enrollment.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
Build with `bash packaging/debian/build.sh`. The output directory contains the
|
|
15
|
+
harness `.deb`, a separate wrapper `.deb` when its local build is available,
|
|
16
|
+
and `install.sh`. Distribute these together for installation without an APT
|
|
17
|
+
repository (system Python packages must still be available).
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
cd build/debian
|
|
21
|
+
./install.sh # missing local wrapper: prompt [Y/n]
|
|
22
|
+
./install.sh --yes # default yes without prompts
|
|
23
|
+
./install.sh --without-wrapper # harness only, e.g. remote wrapper
|
|
24
|
+
./install.sh --dry-run # show APT plan without changing packages
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
A compatible installed wrapper is reused. The installer checks all required
|
|
28
|
+
local package files before calling APT. Noninteractive default is yes; use
|
|
29
|
+
`--without-wrapper` explicitly for a remote-only client.
|
|
30
|
+
|
|
31
|
+
The `.deb` declares the wrapper as `Recommends`, so standard APT installations
|
|
32
|
+
include it by default when a repository provides it. It is optional, not a
|
|
33
|
+
hard dependency. For the current local release use `install.sh`, which passes
|
|
34
|
+
the separate wrapper package to APT when needed. Alternatively:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
sudo apt install ./hugpy-wrapper_0.1.62_all.deb ./hugpy-harness_0.1.1_all.deb
|
|
38
|
+
sudo apt install --no-install-recommends ./hugpy-harness_0.1.1_all.deb
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The harness runtime is `/opt/hugpy-harness/venv`; the wrapper retains its own
|
|
42
|
+
runtime and service. Neither package embeds the other. Installing the wrapper
|
|
43
|
+
alone does not install the harness.
|
|
44
|
+
|
|
45
|
+
## Launch
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
hugpy-harness
|
|
49
|
+
hugpy-harness launch --workspace /path/to/project
|
|
50
|
+
hugpy-harness --base http://HOST:PORT --workspace /path/to/project
|
|
51
|
+
hugpy-harness chat --model MODEL_ID
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
A local endpoint is discovered from the wrapper endpoint file. Remote access
|
|
55
|
+
uses `--base` and `HUGPY_WRAPPER_API_KEY` when authentication is required.
|
|
56
|
+
`hugpy-chat` is an alias for the plain chat interface. `/model` opens the model
|
|
57
|
+
picker; `/resources` toggles telemetry and `/resources full` opens the monitor.
|
|
58
|
+
|
|
59
|
+
Existing sessions remain in each workspace's `.hugpy_wrapper/chat` directory
|
|
60
|
+
for compatibility. Reopen using the same `--workspace` and `/session`.
|
|
61
|
+
Removal (`sudo apt remove hugpy-harness`) leaves chat history, the wrapper,
|
|
62
|
+
models, and original Hugpy Agent untouched. Purge removes only this package's
|
|
63
|
+
runtime, not workspace data. The wrapper never installs this optional package.
|
|
64
|
+
|
|
65
|
+
Chat accepts plain replies; tools are optional when the request needs them.
|
|
66
|
+
Each user message has its own bounded agent loop. Empty answers and engine
|
|
67
|
+
errors are reported without demanding a tool call.
|
|
68
|
+
|
|
69
|
+
## Model tools
|
|
70
|
+
|
|
71
|
+
The harness imports the standalone `hugpy_tools` catalog. Core file, search,
|
|
72
|
+
text, data, hash, time, and web tools are available automatically in both the
|
|
73
|
+
full-screen interface and plain chat. Schemas reach models through prompted
|
|
74
|
+
tool instructions or native function calling, and results feed back into the
|
|
75
|
+
conversation through the existing journaled loop.
|
|
76
|
+
|
|
77
|
+
Existing `fs_read`, `fs_write`, `fs_glob`, and `shell` calls remain supported.
|
|
78
|
+
The harness keeps its workspace-relative `fs_glob(pattern)` contract when the
|
|
79
|
+
portable catalog contains the same name. File arguments are resolved inside
|
|
80
|
+
`--workspace`; writes, network requests, and host operations use `--policy`
|
|
81
|
+
(`ask` by default). Tools execute on the harness machine, even when the model
|
|
82
|
+
runs on a remote wrapper or fleet.
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
hugpy-harness --workspace /path/to/project
|
|
86
|
+
hugpy-harness chat --workspace /path/to/project --policy readonly
|
|
87
|
+
# Add optional document, media, rendering, image, desktop, and VM tools:
|
|
88
|
+
hugpy-harness --workspace /path/to/project --optional-tools
|
|
89
|
+
hugpy-harness chat --workspace /path/to/project --optional-tools
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Optional tools load their backends only when called. Install the relevant
|
|
93
|
+
`hugpy-tools` extras in the harness environment, for example
|
|
94
|
+
`pip install 'hugpy-tools[images,files,render]'`; rendering also needs Playwright
|
|
95
|
+
Chromium, and desktop/VM tools need the corresponding host software. Missing
|
|
96
|
+
backends return a tool error to the model. Generated image and screenshot
|
|
97
|
+
outputs default to `.hugpy_wrapper/tool-artifacts` inside the workspace.
|
|
98
|
+
|
|
99
|
+
Python installations require `hugpy-tools>=0.2.7`. The Debian build bundles
|
|
100
|
+
the core tools wheel alongside the harness wheel and installs both offline.
|
|
101
|
+
Neither mode requires a Toolserver service. Optional backend dependencies are
|
|
102
|
+
not bundled. To install the unreleased workspace versions together:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
pip install ../hugpy_tools .
|
|
106
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
hugpy — Source-Available License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 putkoff (hugpy.ai). All rights reserved.
|
|
4
|
+
|
|
5
|
+
Permission is granted, free of charge, to use this software ("hugpy") for
|
|
6
|
+
personal and non-commercial purposes, and for time-limited commercial
|
|
7
|
+
evaluation, subject to the following conditions:
|
|
8
|
+
|
|
9
|
+
1. Non-commercial use means use by an individual for personal purposes, or
|
|
10
|
+
use by a non-profit or educational institution for its own internal
|
|
11
|
+
purposes. Any use by, for, or on behalf of a for-profit business or in
|
|
12
|
+
connection with revenue-generating activity is commercial use — including
|
|
13
|
+
internal business use, use in producing goods or services, and use on
|
|
14
|
+
paid engagements.
|
|
15
|
+
|
|
16
|
+
2. Commercial use requires a commercial license from the copyright holder.
|
|
17
|
+
Exception: a business may evaluate the software internally for up to
|
|
18
|
+
thirty (30) days free of charge; continued use after that requires a
|
|
19
|
+
commercial license.
|
|
20
|
+
|
|
21
|
+
3. Redistribution of this software, in source or binary form, modified or
|
|
22
|
+
unmodified, is not permitted without prior written permission from the
|
|
23
|
+
copyright holder. Downloading the software from an official distribution
|
|
24
|
+
channel (PyPI, npm, hugpy.ai) is not redistribution.
|
|
25
|
+
|
|
26
|
+
4. Modification for personal use or internal evaluation is permitted;
|
|
27
|
+
distribution of modified versions is not.
|
|
28
|
+
|
|
29
|
+
5. This notice must be retained in all copies or substantial portions of
|
|
30
|
+
the software.
|
|
31
|
+
|
|
32
|
+
6. Any use outside these terms automatically terminates this license.
|
|
33
|
+
|
|
34
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
35
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
36
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
37
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING
|
|
38
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
39
|
+
IN THE SOFTWARE.
|
|
40
|
+
|
|
41
|
+
For commercial licensing or redistribution permission: https://hugpy.ai
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Hugpy Agent chat extraction
|
|
2
|
+
|
|
3
|
+
Source: `/srv/hugpy/app/packages/hugpy_agent`, version 0.1.114.
|
|
4
|
+
The AgentLoop, adapter, gateway, journal, memory, audit and policy code are
|
|
5
|
+
retained. Config is its dataclass without fleet endpoint discovery. Tools use
|
|
6
|
+
the existing filesystem and shell implementations plus final_answer and a
|
|
7
|
+
terminal operator channel. Fleet leases, remote tools, subagents and embedding
|
|
8
|
+
RAG are omitted. State lives in `.hugpy_wrapper/chat` within the workspace.
|
|
9
|
+
The CLI turn sequence is extracted from `hugpy_agent.cli.cmd_chat`.
|
|
10
|
+
Original file SHA-256 values:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
loop.py 9cdb541f090367eba65aec54561845cb09e5258249a512aa54c68255999e0934
|
|
14
|
+
gateway.py 5df914e06e2edc3f3a91cbcc7207df5da78abd5e63684d304f39eb9829c15440
|
|
15
|
+
adapter.py 25259f038bfb117e341db7d27d4588a1bbcffe35fd3947ce4f98f5941cfa15a3
|
|
16
|
+
journal.py 3acf8ab60c4d5194207cb05e3a17633bdb21276bbed4938f591c829189b5451f
|
|
17
|
+
memory.py 6e187ce5f2ab653bb4a67fb1d2060f9438a226a67428608c363a07f56a6269d8
|
|
18
|
+
audit.py b58a8f9ada3698f81970cf37d6d90a496987b2251d917f8c278a9858bc2ca466
|
|
19
|
+
policy.py ab4e391739db83dd31b38d1e28b12367ef4c5aad9853bdc708e2230755f17006
|
|
20
|
+
tools/fs.py 810bf6ea730a15412f693e3b5a7773b5cf75e5623c2e54f76cae08a6039858d4
|
|
21
|
+
tools/shell.py 868ae9aeb93bcce25563f5ffd427872c0ede4ae421054e424f4e679b7d6cd54d
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Local fixes: conversation mode permits plain chat replies; terminal approvals
|
|
25
|
+
replace remote comms. A final_answer with an unambiguous top-level answer is
|
|
26
|
+
normalized; invalid final answers request repair instead of displaying `{}`.
|
|
27
|
+
|
|
28
|
+
The `tui/`, `serve_client/`, and `branding.py` sources are also extracted from
|
|
29
|
+
Hugpy Agent 0.1.114. The original curses screens, command menu, model/session
|
|
30
|
+
pickers, tool cards and approval UI are retained. `serve_client/wrapper.py`
|
|
31
|
+
adapts them to the standalone wrapper and local AgentLoop journals. Remote-only
|
|
32
|
+
commands are hidden from the local menu. `hugpy-agent launch` and `tui` both
|
|
33
|
+
open this interface; `chat` remains the plain REPL. No OpenCode launch is used.
|
|
34
|
+
|
|
35
|
+
Wrapper additions: the resources pane and full resource monitor poll the
|
|
36
|
+
connected wrapper independently of the chat/event loop, displaying telemetry
|
|
37
|
+
freshness, unavailable counters, resident health, and admission queue reasons.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Standalone extraction of Hugpy Agent 0.1.114 chat runtime."""
|