@joule-sh/code-darwin-arm64 0.19.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 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` and
48
+ `@joule-sh/code-darwin-arm64`, installed as optional dependencies so npm takes
49
+ only the one that matches. There is no Windows package yet, because there is
50
+ no Windows binary yet ([#173](https://github.com/joule-sh/code/issues/173));
51
+ installing there says so and points at WSL.
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`) and Intel macOS (`x86_64-macos`); other platforms fail with a
57
+ 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.
package/bin/joule ADDED
Binary file
Binary file
package/bin/relay ADDED
Binary file
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@joule-sh/code-darwin-arm64",
3
+ "version": "0.19.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 darwin-arm64 binaries for @joule-sh/code. Installed for you as an optional dependency; do not depend on it directly.",
17
+ "os": [
18
+ "darwin"
19
+ ],
20
+ "cpu": [
21
+ "arm64"
22
+ ],
23
+ "files": [
24
+ "bin"
25
+ ],
26
+ "preferUnplugged": true
27
+ }