@joule-sh/code-win32-x64 0.21.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 +152 -0
- package/bin/joule-daemon.exe +0 -0
- package/bin/joule.exe +0 -0
- package/bin/relay.exe +0 -0
- package/package.json +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# code
|
|
2
|
+
|
|
3
|
+
An agentic coding terminal you can also drive from a web page.
|
|
4
|
+
|
|
5
|
+
You run it in a repo on your own machine. It prints a short pairing code. You
|
|
6
|
+
open the page, enter the code, and from then on the browser and the terminal are
|
|
7
|
+
the same session. You start work at the desk and keep steering it from a laptop
|
|
8
|
+
or a phone.
|
|
9
|
+
|
|
10
|
+
The agent reads and edits files, runs commands and makes commits **on your
|
|
11
|
+
machine**. The browser is a remote control, never an executor.
|
|
12
|
+
|
|
13
|
+
## Status
|
|
14
|
+
|
|
15
|
+
v0 is in progress. Landed: the repo skeleton and CI
|
|
16
|
+
([#1](https://github.com/joule-sh/code/issues/1)), the shared frame protocol
|
|
17
|
+
([#2](https://github.com/joule-sh/code/issues/2)), the release pipeline
|
|
18
|
+
([#13](https://github.com/joule-sh/code/issues/13), install mechanics only).
|
|
19
|
+
Not yet: the turn loop, a model provider, the file and run tools, approval,
|
|
20
|
+
the terminal front end, the relay, and the web page. There is no working demo
|
|
21
|
+
until those land, the install below gets you the v0 skeleton, not a usable
|
|
22
|
+
tool.
|
|
23
|
+
|
|
24
|
+
- [docs/00-plan.md](docs/00-plan.md): architecture, the decisions and what
|
|
25
|
+
forced them, and the order the work goes in.
|
|
26
|
+
- [specs/](specs/): one directory per decided piece, in the same numbered form
|
|
27
|
+
the Lumen repo uses.
|
|
28
|
+
- [The v0 milestone](https://github.com/joule-sh/code/milestone/1) holds the
|
|
29
|
+
tickets. [#15](https://github.com/joule-sh/code/issues/15) is the plan,
|
|
30
|
+
[#1](https://github.com/joule-sh/code/issues/1) is where the code starts.
|
|
31
|
+
|
|
32
|
+
## Install
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
npm i -g @joule-sh/code
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
or, with no Node on the machine:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
curl -fsSL https://raw.githubusercontent.com/joule-sh/code/main/install.sh | sh
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Both put the same two commands on your `PATH` at the same version, and both
|
|
45
|
+
run every binary before reporting success. npm pins and uninstalls cleanly;
|
|
46
|
+
the script needs nothing installed first. The npm package is a wrapper whose
|
|
47
|
+
binaries live in `@joule-sh/code-linux-x64`, `@joule-sh/code-darwin-x64`,
|
|
48
|
+
`@joule-sh/code-darwin-arm64` and `@joule-sh/code-win32-x64`, installed as
|
|
49
|
+
optional dependencies so npm takes only the one that matches. `install.sh` has
|
|
50
|
+
no Windows counterpart: npm is the way in there, or the
|
|
51
|
+
`code-x86_64-windows.zip` a release publishes.
|
|
52
|
+
|
|
53
|
+
Installs as `joule`, not `code` - `code` is already taken by VS Code's CLI on
|
|
54
|
+
most machines, and this project would silently shadow or lose to it depending
|
|
55
|
+
on `PATH` order. Prebuilt for x86_64 Linux, Apple Silicon macOS
|
|
56
|
+
(`aarch64-macos`), Intel macOS (`x86_64-macos`) and x86_64 Windows; other
|
|
57
|
+
platforms fail with a clear message and point at building from source below.
|
|
58
|
+
|
|
59
|
+
Every archive carries the garbage collector it needs, so there is no library to
|
|
60
|
+
install alongside it. A macOS binary needs nothing beyond the system's own
|
|
61
|
+
libSystem. A Linux binary is linked statically against musl and needs nothing
|
|
62
|
+
at all - no libc version, no loader, no shared library - so it runs the same on
|
|
63
|
+
Ubuntu 22.04, on a decade-old enterprise release and on Alpine. The installer
|
|
64
|
+
runs each binary before it links anything onto your `PATH`, so an install that
|
|
65
|
+
reports success is one that runs, and an install that cannot says what stopped
|
|
66
|
+
it.
|
|
67
|
+
|
|
68
|
+
## Build from source
|
|
69
|
+
|
|
70
|
+
Requires the [Lumen](https://lumen-lang.org) toolchain (`lumen`, and `zig`
|
|
71
|
+
alongside it on `PATH`, as the release archive ships them). Lumen publishes
|
|
72
|
+
macOS builds too (`lumen-aarch64-macos.tar.gz`, `lumen-x86_64-macos.tar.gz`),
|
|
73
|
+
so this works natively on a Mac.
|
|
74
|
+
|
|
75
|
+
Lumen's allocator links the Boehm collector as a system library. Linux distros
|
|
76
|
+
ship it as `libgc` and a local build needs nothing extra. macOS has no system
|
|
77
|
+
copy, so a Mac build needs Homebrew's and has to point the compiler at it:
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
brew install bdw-gc
|
|
81
|
+
make build LUMEN_FLAGS="--link -L$(brew --prefix bdw-gc)/lib"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The `-L` is not optional on Intel Macs. Zig ignores `LIBRARY_PATH` on macOS and
|
|
85
|
+
only has Apple Silicon's `/opt/homebrew` in its built-in search paths, so an
|
|
86
|
+
Intel build fails without it.
|
|
87
|
+
|
|
88
|
+
The release archives link that library statically on both platforms, so an
|
|
89
|
+
installed release carries it. macOS uses Homebrew's `libgc.a`. Linux names a
|
|
90
|
+
target instead, which links musl and a collector the compiler builds for that
|
|
91
|
+
target, leaving a binary with nothing to resolve. To reproduce what a Linux
|
|
92
|
+
release ships:
|
|
93
|
+
|
|
94
|
+
```sh
|
|
95
|
+
make release LUMEN_TARGET=x86_64-linux-musl
|
|
96
|
+
scripts/check_linux_release.sh bin/joule bin/relay bin/joule-daemon
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`LUMEN_TARGET` also compiles the vendored `tty_shim.o` for that target, so
|
|
100
|
+
switch it on a tree that was already built and `make clean` first.
|
|
101
|
+
|
|
102
|
+
```sh
|
|
103
|
+
git clone https://github.com/joule-sh/code.git
|
|
104
|
+
cd code
|
|
105
|
+
make build
|
|
106
|
+
./bin/joule --version
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`make test` runs the test suite, `make release` builds the `--release-fast`
|
|
110
|
+
binaries the release workflow packages.
|
|
111
|
+
|
|
112
|
+
## The one invariant
|
|
113
|
+
|
|
114
|
+
**The terminal is authoritative.** It holds the workspace, the history and the
|
|
115
|
+
tool loop. The relay pairs a browser to a terminal, forwards frames both ways,
|
|
116
|
+
and keeps a bounded replay buffer. Nothing more. It never runs a tool, never
|
|
117
|
+
holds a checkout, and stores nothing durable. If the relay dies the terminal
|
|
118
|
+
keeps working; you lose the web view, not the work.
|
|
119
|
+
|
|
120
|
+
Every design question in v0 is answered by pushing state toward the terminal.
|
|
121
|
+
|
|
122
|
+
## Built in Lumen
|
|
123
|
+
|
|
124
|
+
CLI, relay and the page the relay serves. Two binaries, one language.
|
|
125
|
+
|
|
126
|
+
The terminal and the browser each hold one WebSocket to the relay, using the
|
|
127
|
+
`websocket` package from std-contrib. The model is read over SSE with
|
|
128
|
+
`http.stream`, because that is what providers speak. The reasoning, including
|
|
129
|
+
the concurrency problem a blocking `receive()` creates for the terminal, is in
|
|
130
|
+
[spec 003](specs/003-transport/spec.md).
|
|
131
|
+
|
|
132
|
+
## Honest limits (v0)
|
|
133
|
+
|
|
134
|
+
No hosted sandbox, the agent only ever runs on your own machine. No multi-agent,
|
|
135
|
+
no subagents, no MCP. See [docs/00-plan.md](docs/00-plan.md) for the reasoning
|
|
136
|
+
behind each.
|
|
137
|
+
|
|
138
|
+
Conversation history is saved per workspace as you go and picked back up with
|
|
139
|
+
`joule --continue`, which resumes the most recent session for the current
|
|
140
|
+
directory. Model, mode and workspace are not part of what gets saved - they
|
|
141
|
+
are re-resolved fresh from the normal config chain on every launch. There is
|
|
142
|
+
no picker for older sessions yet, only the most recent one.
|
|
143
|
+
|
|
144
|
+
The terminal enables mouse reporting so the wheel can scroll the transcript.
|
|
145
|
+
That hands mouse events to joule, which is why click-drag no longer selects
|
|
146
|
+
text on its own - the terminal emulator is no longer the one handling the
|
|
147
|
+
click. Hold Shift while dragging to select natively; this bypasses mouse
|
|
148
|
+
reporting in GNOME Terminal and Windows Terminal. iTerm2 uses Option instead
|
|
149
|
+
of Shift for this. Terminal.app has no modifier-key bypass at all - turn off
|
|
150
|
+
View > Allow Mouse Reporting (Cmd-R), select and copy, then turn it back on.
|
|
151
|
+
Copying from a collapsed tool-output group only copies what is visible; the
|
|
152
|
+
rows hidden by the collapse are not part of the selection.
|
|
Binary file
|
package/bin/joule.exe
ADDED
|
Binary file
|
package/bin/relay.exe
ADDED
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@joule-sh/code-win32-x64",
|
|
3
|
+
"version": "0.21.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/joule-sh/code.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/joule-sh/code#readme",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/joule-sh/code/issues"
|
|
12
|
+
},
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"description": "The win32-x64 binaries for @joule-sh/code. Installed for you as an optional dependency; do not depend on it directly.",
|
|
17
|
+
"os": [
|
|
18
|
+
"win32"
|
|
19
|
+
],
|
|
20
|
+
"cpu": [
|
|
21
|
+
"x64"
|
|
22
|
+
],
|
|
23
|
+
"files": [
|
|
24
|
+
"bin"
|
|
25
|
+
],
|
|
26
|
+
"preferUnplugged": true
|
|
27
|
+
}
|