@hlix/cli 0.7.1 → 0.8.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/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
1
  Hlix Code and the hlix CLI
2
- Copyright (c) 2026 hlix.ai. All rights reserved.
2
+ Copyright (c) 2026 Hlix, Inc. All rights reserved.
3
3
 
4
4
  This software is proprietary. It is distributed in compiled form so that you
5
5
  can install and run it.
package/README.md CHANGED
@@ -42,12 +42,20 @@ hlix --help # the commands
42
42
  hlix # open Hlix Code
43
43
  ```
44
44
 
45
+ `hlix` runs as one self-contained executable: npm installs the one for your
46
+ platform (`@hlix/cli-darwin-arm64`, `-darwin-x64`, `-linux-x64` or
47
+ `-linux-arm64`) and `hlix` runs it directly. Where there is none (Windows,
48
+ musl-based Linux, `--omit=optional`) the Node build in this package runs
49
+ instead, after one line on stderr. Without npm,
50
+ `curl -fsSL https://staging.hlix.ai/install.sh | bash` installs the same
51
+ executable, and so does `brew install hlix-ai/tap/hlix`.
52
+
45
53
  For CI, and for anything else that must not change underneath you, pin the
46
54
  version instead of floating to `latest`:
47
55
 
48
56
  ```bash
49
- npm install --global @hlix/cli@0.7.1
50
- npx @hlix/cli@0.7.1 status --json
57
+ npm install --global @hlix/cli@0.8.0
58
+ npx @hlix/cli@0.8.0 status --json
51
59
  ```
52
60
 
53
61
  ## Authenticate
@@ -102,26 +110,19 @@ hlix status [--json]
102
110
  hlix init [folder] [--project <id>] [--json]
103
111
  hlix terminal [project-id] [--print] [--web] [--json]
104
112
  hlix import [folder] [--dry-run] [--env-file <path>] [--history preserve] [--yes]
105
- hlix push [--dry-run] | hlix pull [--force] [--yes] [--dry-run] | hlix sync [--dry-run]
113
+ hlix push [--dry-run] | hlix pull [--dry-run] | hlix sync [--dry-run]
106
114
  hlix projects list [--json]
107
115
  hlix projects get [project-id] [--json]
108
116
  hlix tasks list [--project <id>] [--status <status>] [--json]
109
117
  hlix tasks get <id> [--json]
110
118
  hlix tasks review <id> [--json]
111
- hlix tasks watch <id> # follows the task's status stream over SSE
119
+ hlix tasks watch <id> # follows the task's live status until it is over
112
120
  ```
113
121
 
114
122
  `--dry-run` on `push`, `pull` and `sync` prints the divergence and the verdict
115
- the real command would reach, and changes nothing. `pull --force` replaces local
116
- files, so it asks first; `--yes` is the documented script bypass.
123
+ the real command would reach, and changes nothing. Sync refuses simultaneous local and remote changes.
117
124
 
118
- `hlix import .` scans the selected root, builds a temporary Git bundle without
119
- mutating the source repository, uploads it resumably, restores it into the
120
- project's Coding Workspace, and records the initial immutable revision. Dotenv
121
- values never enter the bundle: choose one file with `--env-file`, review the
122
- key-only dry-run, and approve with `--yes`. Agent instructions, skills, and MCP
123
- configuration are quarantined for separate review instead of being executed
124
- during import.
125
+ `hlix import .` scans the selected root and pushes source files into **HLIX Repos** through Git. It keeps the local repository and its origin intact. `--history preserve` retains scanned source history; incomplete scans or secret findings require review or `--history sanitize`. Protected files move through the encrypted secrets channel. File browsing does not start the project's Coding Workspace.
125
126
 
126
127
  ## Hlix Code
127
128
 
@@ -136,23 +137,23 @@ hlix -p "what does this repo do" --json # JSONL events instead of prose
136
137
 
137
138
  Inside the shell:
138
139
 
139
- | | |
140
- | --- | --- |
141
- | `/help` | every command this build knows |
142
- | `/model` | pick the model, from what your workspace serves |
143
- | `/harness` | pick which coder does the work |
144
- | `/sandbox` | pick where this session's files and commands run |
145
- | `/rules` | which rules files the agent loaded, and how big they are |
146
- | `/standards` | what this folder gave the agent, and which MCP servers connected |
147
- | `/yolo` | run without being asked for approval — toggles |
148
- | `/log` | what this session's libraries logged, which the screen never shows |
140
+ | | |
141
+ | ----------------------------------------- | ---------------------------------------------------------------------------------------- |
142
+ | `/help` | every command this build knows |
143
+ | `/model` | pick the model, from what your workspace serves |
144
+ | `/harness` | pick which coder does the work |
145
+ | `/sandbox` | pick where this session's files and commands run |
146
+ | `/rules` | which rules files the agent loaded, and how big they are |
147
+ | `/standards` | what this folder gave the agent, and which MCP servers connected |
148
+ | `/yolo` | run without being asked for approval — toggles |
149
+ | `/log` | what this session's libraries logged, which the screen never shows |
149
150
  | `/new`, `/threads`, `/resume`, `/compact` | start a conversation, list this project's, pick an earlier one, condense one into memory |
150
- | `/<any hlix command>` | `/status`, `/tasks-list`, `/push` — the CLI, inline, as its own panel |
151
- | `/<your own>` | every `.md` file in `.claude/commands` or `.hlix/commands` |
152
- | ⇧Tab | switch between `build` and `plan` |
153
- | Ctrl-O | expand the newest tool, command or subagent panel |
154
- | ESC | stop the turn that is running |
155
- | Ctrl-C twice | leave |
151
+ | `/<any hlix command>` | `/status`, `/tasks-list`, `/push` — the CLI, inline, as its own panel |
152
+ | `/<your own>` | every `.md` file in `.claude/commands` or `.hlix/commands` |
153
+ | ⇧Tab | switch between `build` and `plan` |
154
+ | Ctrl-O | expand the newest tool, command or subagent panel |
155
+ | ESC | stop the turn that is running |
156
+ | Ctrl-C twice | leave |
156
157
 
157
158
  A tool that changes something asks first, as a block above the prompt: allow
158
159
  once, decline with a reason, or allow that family for the rest of the session.
@@ -217,9 +218,17 @@ rather than writing a secret into the file.
217
218
  {
218
219
  "schemaVersion": 1,
219
220
  "providers": [
220
- { "name": "lab", "url": "http://localhost:1234/v1", "models": ["qwen3-coder"] },
221
- { "name": "acme", "url": "https://api.acme.test/v1", "models": ["acme-coder"],
222
- "apiKeyEnv": "ACME_API_KEY" }
221
+ {
222
+ "name": "lab",
223
+ "url": "http://localhost:1234/v1",
224
+ "models": ["qwen3-coder"]
225
+ },
226
+ {
227
+ "name": "acme",
228
+ "url": "https://api.acme.test/v1",
229
+ "models": ["acme-coder"],
230
+ "apiKeyEnv": "ACME_API_KEY"
231
+ }
223
232
  ]
224
233
  }
225
234
  ```
@@ -245,9 +254,9 @@ always being 1.
245
254
 
246
255
  - **No execution commands.** Dispatching a run from a dropped connection can
247
256
  duplicate work, and the commands to do so are not part of this surface.
248
- - **No `tasks logs --follow`.** There is no log *stream* on the API — only plain
257
+ - **No `tasks logs --follow`.** There is no log _stream_ on the API — only plain
249
258
  reads — so a `--follow` here would be a poll dressed up as a stream. Use
250
- `hlix tasks watch` for the real status stream instead.
259
+ `hlix tasks watch` for the task's live status instead.
251
260
  - **No retries on non-idempotent verbs.** A retried POST is a duplicated
252
261
  request; the SDK refuses it and this CLI inherits that.
253
262
 
@@ -15,7 +15,7 @@ does not carry that entry can reproduce for it, and for a compiled binary it is
15
15
  also its own. Where such an entry ships a licence of its OWN, that text is kept
16
16
  with this generator instead and the entry is listed under it.
17
17
 
18
- Packages (271)
18
+ Packages (270)
19
19
  --------------
20
20
 
21
21
  @a2a-js/sdk (Apache-2.0)
@@ -261,7 +261,6 @@ Packages (271)
261
261
  tar-stream (MIT)
262
262
  teex (MIT)
263
263
  text-decoder (Apache-2.0)
264
- tokenx (MIT)
265
264
  trough (MIT)
266
265
  tslib (0BSD)
267
266
  tweetnacl (Unlicense)
@@ -5148,32 +5147,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5148
5147
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
5149
5148
  THE SOFTWARE.
5150
5149
 
5151
- ==============================================================================
5152
- tokenx (MIT)
5153
- ==============================================================================
5154
-
5155
- MIT License
5156
-
5157
- Copyright (c) 2023-PRESENT Johann Schopplich
5158
-
5159
- Permission is hereby granted, free of charge, to any person obtaining a copy
5160
- of this software and associated documentation files (the "Software"), to deal
5161
- in the Software without restriction, including without limitation the rights
5162
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5163
- copies of the Software, and to permit persons to whom the Software is
5164
- furnished to do so, subject to the following conditions:
5165
-
5166
- The above copyright notice and this permission notice shall be included in all
5167
- copies or substantial portions of the Software.
5168
-
5169
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5170
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5171
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5172
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5173
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
5174
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5175
- SOFTWARE.
5176
-
5177
5150
  ==============================================================================
5178
5151
  trough (MIT)
5179
5152
  ==============================================================================
package/bin/hlix ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ // `hlix` as npm installs it. After a normal install the postinstall
3
+ // (install.cjs) has replaced this file with the standalone binary itself, so
4
+ // this only runs when that did not happen: scripts off (--ignore-scripts, pnpm)
5
+ // runs the platform package's binary from here; no platform package
6
+ // (--omit=optional, an unsupported platform) runs the Node build, after one line.
7
+ import { spawn } from "node:child_process"
8
+ import { createRequire } from "node:module"
9
+ import { fileURLToPath } from "node:url"
10
+
11
+ const { nativeBinary } = createRequire(import.meta.url)("../install.cjs")
12
+ const found = nativeBinary()
13
+ let command = found.binary
14
+ let args = process.argv.slice(2)
15
+ if (!command) {
16
+ process.stderr.write(`hlix: using the Node build (${found.reason})\n`)
17
+ command = process.execPath
18
+ args = [fileURLToPath(new URL("../dist/index.js", import.meta.url)), ...args]
19
+ }
20
+
21
+ // This copy is the one a person installed; the binary runs from the platform
22
+ // package, so it is told which path to report (hlix status).
23
+ // The terminal signals the whole process group; a signal sent to this
24
+ // process alone (a supervisor, `kill`) is passed on instead of orphaning it.
25
+ const forward = (signal) => child.kill(signal)
26
+ const signals = ["SIGINT", "SIGTERM", "SIGHUP"]
27
+ for (const signal of signals) process.on(signal, forward)
28
+ const child = spawn(command, args, { stdio: "inherit", env: { ...process.env, HLIX_SELF: process.argv[1] } })
29
+ child.on("error", (error) => {
30
+ process.stderr.write(`hlix: ${command}: ${error.message}\n`)
31
+ process.exit(1)
32
+ })
33
+ child.on("exit", (code, signal) => {
34
+ for (const name of signals) process.off(name, forward)
35
+ if (signal) process.kill(process.pid, signal)
36
+ else process.exit(code ?? 1)
37
+ })