@hlix/cli 0.6.0 → 0.7.1
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 +5 -3
- package/THIRD_PARTY_NOTICES +467 -1657
- package/dist/index-e8mth7n3.js +261 -0
- package/dist/index.js +4 -4
- package/dist/main-jffkgf23.js +144 -0
- package/dist/package-3xr4ys3n.js +2 -0
- package/package.json +12 -6
- package/skills/hlix/SKILL.md +42 -12
- package/dist/index-txapa4v9.js +0 -233
- package/dist/main-f5y87ab4.js +0 -67
- package/dist/package-cxk3dvbh.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
var e="@hlix/cli",i="0.7.1",n="SEE LICENSE IN LICENSE",r="Hlix Code and the hlix control-plane CLI.",a=["hlix","cli","agents"],l="https://hlix.ai",p="module",c="./dist/index.js",b={hlix:"./dist/index.js"},o=["dist","skills","LICENSE","THIRD_PARTY_NOTICES"],u={node:">=22.19.0"},d={access:"public"},m={build:"rm -rf dist && bun build src/index.ts --outdir dist --target node --format esm --splitting --packages external --minify --banner '#!/usr/bin/env node'",test:'bun test src --path-ignore-patterns "**/*.integration.test.ts" --timeout 20000',typecheck:"tsc --noEmit",prepublishOnly:"bun run typecheck && bun run build && bun run test","test:integration":"NODE_ENV=test bun run ../../apps/backend/scripts/with-aimock.ts -- bun run ../../apps/backend/scripts/with-test-db.ts -- bun test --isolate --preload ../../apps/backend/test/helpers/pool-lifecycle.ts --timeout 60000 .integration.test.ts","build:binary":"bun run scripts/build-binary.ts","test:binary":"bun run build:binary && HLIX_TEST_BINARY=dist-native/hlix bun test src/binary.test.ts --timeout 60000 && bun run scripts/smoke-binary.ts","test:integration:binary":"bun run build:binary && HLIX_TEST_BINARY=dist-native/hlix NODE_ENV=test bun run ../../apps/backend/scripts/with-aimock.ts -- bun run ../../apps/backend/scripts/with-test-db.ts -- bun test --isolate --preload ../../apps/backend/test/helpers/pool-lifecycle.ts --timeout 60000 src/sync.integration.test.ts src/auth.integration.test.ts"},h={"@earendil-works/pi-tui":"0.85.1","@mastra/acp":"^0.4.1","@mastra/core":"1.71.0","@mastra/docker":"^0.9.0","@mastra/libsql":"1.23.0","@mastra/mcp":"2.1.0","@mastra/memory":"1.30.0",ignore:"7.0.8","jsonc-parser":"3.3.1","openapi-fetch":"^0.17.0","smol-toml":"1.8.0",yaml:"2.9.0",zod:"4.5.4"},y={"@hlix/sdk":"^0.3.0","@hlix/shared":"*","@types/bun":"latest",typescript:"^7.0.2"},k={name:e,version:i,license:n,description:r,keywords:a,homepage:l,type:p,main:c,bin:b,files:o,engines:u,publishConfig:d,scripts:m,dependencies:h,devDependencies:y};export{b as bin,k as default,h as dependencies,r as description,y as devDependencies,u as engines,o as files,l as homepage,a as keywords,n as license,c as main,e as name,d as publishConfig,m as scripts,p as type,i as version};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hlix/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"description": "Hlix Code and the hlix control-plane CLI.",
|
|
6
6
|
"keywords": [
|
|
@@ -31,22 +31,28 @@
|
|
|
31
31
|
"test": "bun test src --path-ignore-patterns \"**/*.integration.test.ts\" --timeout 20000",
|
|
32
32
|
"typecheck": "tsc --noEmit",
|
|
33
33
|
"prepublishOnly": "bun run typecheck && bun run build && bun run test",
|
|
34
|
-
"test:integration": "NODE_ENV=test bun run ../../apps/backend/scripts/with-aimock.ts -- bun run ../../apps/backend/scripts/with-test-db.ts -- bun test --isolate --preload ../../apps/backend/test/helpers/pool-lifecycle.ts --timeout 60000 .integration.test.ts"
|
|
34
|
+
"test:integration": "NODE_ENV=test bun run ../../apps/backend/scripts/with-aimock.ts -- bun run ../../apps/backend/scripts/with-test-db.ts -- bun test --isolate --preload ../../apps/backend/test/helpers/pool-lifecycle.ts --timeout 60000 .integration.test.ts",
|
|
35
|
+
"build:binary": "bun run scripts/build-binary.ts",
|
|
36
|
+
"test:binary": "bun run build:binary && HLIX_TEST_BINARY=dist-native/hlix bun test src/binary.test.ts --timeout 60000 && bun run scripts/smoke-binary.ts",
|
|
37
|
+
"test:integration:binary": "bun run build:binary && HLIX_TEST_BINARY=dist-native/hlix NODE_ENV=test bun run ../../apps/backend/scripts/with-aimock.ts -- bun run ../../apps/backend/scripts/with-test-db.ts -- bun test --isolate --preload ../../apps/backend/test/helpers/pool-lifecycle.ts --timeout 60000 src/sync.integration.test.ts src/auth.integration.test.ts"
|
|
35
38
|
},
|
|
36
39
|
"dependencies": {
|
|
37
40
|
"@earendil-works/pi-tui": "0.85.1",
|
|
38
41
|
"@mastra/acp": "^0.4.1",
|
|
39
|
-
"@mastra/core": "1.
|
|
40
|
-
"@mastra/docker": "^0.
|
|
42
|
+
"@mastra/core": "1.71.0",
|
|
43
|
+
"@mastra/docker": "^0.9.0",
|
|
41
44
|
"@mastra/libsql": "1.23.0",
|
|
42
|
-
"@mastra/mcp": "1.
|
|
45
|
+
"@mastra/mcp": "2.1.0",
|
|
43
46
|
"@mastra/memory": "1.30.0",
|
|
44
47
|
"ignore": "7.0.8",
|
|
48
|
+
"jsonc-parser": "3.3.1",
|
|
45
49
|
"openapi-fetch": "^0.17.0",
|
|
50
|
+
"smol-toml": "1.8.0",
|
|
51
|
+
"yaml": "2.9.0",
|
|
46
52
|
"zod": "4.5.4"
|
|
47
53
|
},
|
|
48
54
|
"devDependencies": {
|
|
49
|
-
"@hlix/sdk": "^0.
|
|
55
|
+
"@hlix/sdk": "^0.3.0",
|
|
50
56
|
"@hlix/shared": "*",
|
|
51
57
|
"@types/bun": "latest",
|
|
52
58
|
"typescript": "^7.0.2"
|
package/skills/hlix/SKILL.md
CHANGED
|
@@ -187,9 +187,10 @@ hlix standards [--json] # instruction files, skills, commands, MCP
|
|
|
187
187
|
hlix rules [--edit] [--global] [--json] # the rules files the coding agent reads; --edit opens one in $EDITOR
|
|
188
188
|
hlix projects list [--json] # projects in the workspace
|
|
189
189
|
hlix projects get [project-id] [--json]
|
|
190
|
+
hlix projects delete <id|name> [--yes] [--json]
|
|
190
191
|
hlix init [folder] [--project <id>] [--json] # create committed project configuration; --project binds an existing cloud project
|
|
191
192
|
hlix terminal [project-id] [--print] [--web] [--json] # shell into the project's Coding Workspace (ssh here, or the browser terminal)
|
|
192
|
-
hlix import [folder] [--dry-run] [--env-file <path>] [--history preserve] [--no-connect-origin] [--attach] [--yes] [--json]
|
|
193
|
+
hlix import [folder] [--dry-run] [--env-file <path>] [--history preserve|sanitize] [--include <path>] [--no-connect-origin] [--attach] [--yes] [--json]
|
|
193
194
|
hlix sync [--dry-run] [--json] # push or pull when only one side changed
|
|
194
195
|
hlix pull [--force] [--yes] [--dry-run] [--json]
|
|
195
196
|
hlix push [--dry-run] [--json] # compare-and-swap a new immutable revision
|
|
@@ -223,14 +224,24 @@ agent/skill/MCP resources, and Git-history findings, but never secret values.
|
|
|
223
224
|
Hlix collects every project-local dotenv and credential file. It applies the
|
|
224
225
|
standard development dotenv precedence automatically and preserves every other
|
|
225
226
|
profile encrypted; `--env-file` is an explicit override.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
227
|
+
Git history is preserved by default. Possible historical secrets are warnings,
|
|
228
|
+
with at most five redacted commit-and-file findings. To leave old commits out,
|
|
229
|
+
use `--history sanitize` to upload a current-tree snapshot without changing local Git history. `--history preserve`
|
|
230
|
+
and the legacy `--history abort-on-findings` remain accepted; neither blocks on
|
|
231
|
+
historical findings. Nested repositories and declared submodules import their
|
|
232
|
+
working files without their own Git metadata or history. Ignored nested
|
|
233
|
+
repositories are skipped silently.
|
|
234
|
+
|
|
235
|
+
Ordinary files over the upload limit are skipped with a named hint. If needed, history is omitted, then the largest folders are skipped until the snapshot fits. Import, init, and push refresh a marked Hlix-managed block in `.hlixignore` from shared stack detection and verified local generated paths. Personal lines outside the block are preserved byte-for-byte; `!` overrides outside the block take precedence even above it. Automatic rules never cover tracked files or secrets. Declared tools identify untracked build output without generation comments: Vite literal build.outDir or dist, Next .next (plus out for a default static export), Nuxt .nuxt/.output, Astro dist, Turbo .turbo, TypeScript literal tsconfig outDir, Webpack/Parcel dist defaults, and Rollup configured output.dir. Python build/dist/egg-info needs a declared build backend. Resolve output paths per package and configured root, applying recognized build-command output flags first. Unresolved root/config/CLI overrides disable inference for that tool rather than reverting to a default; configuration code is never executed. Track authored files in declared output directories or use ! overrides to keep them visible. Composer vendor requires a valid lockfile; local path dependencies stay visible. Untracked agent scratch and external nested repos are eligible only when they are not project source. Unknown paths stay visible. A refresh removes broad rules for folders that acquired tracked files or secrets; source outside declared build outputs stays visible. Human output adds one line: `Hlix ignored 6 generated folders — see .hlixignore`. Dry runs do not refresh files, and linked ignore targets or malformed blocks are left untouched. Folders with a managed block use these rules instead of blanket generated-directory exclusions. `--include <path>` restores one ignored path and persists it for later push/sync scans, subject to upload limits; it never includes Git metadata or bypasses secret protection. Push leaves the cloud unchanged when skipping would remove an existing cloud file. Symlinked `.hlixignore` files are read from their targets; an unreadable target leaves uploads unchanged with a permission warning.
|
|
236
|
+
|
|
237
|
+
Never delete .git folders or files to get past this; use .hlixignore instead.
|
|
238
|
+
|
|
239
|
+
The human scan report is ordered: uploaded / skipped / secrets / warnings /
|
|
240
|
+
blocked. The secrets line says files move encrypted. Protected working-tree files are named individually; their values are
|
|
241
|
+
never printed. The JSON dry run retains the full environment and file report.
|
|
242
|
+
The upload manifest summarizes skip lists longer than 5,000 entries; local
|
|
243
|
+
reports and push protection retain every skipped path.
|
|
244
|
+
|
|
234
245
|
Current environment values are sent only in the authenticated finalization
|
|
235
246
|
request and stored encrypted; they are never placed in the Git bundle.
|
|
236
247
|
|
|
@@ -271,8 +282,7 @@ the project already has cloud files, `hlix pull` brings them down and becomes
|
|
|
271
282
|
that base. If it has none — a project created in the dashboard — `hlix push`
|
|
272
283
|
(or `hlix sync`) uploads the folder as revision 1 and builds the project's
|
|
273
284
|
Coding Workspace from it. Only a project with no revision at all can be
|
|
274
|
-
bootstrapped that way: a
|
|
275
|
-
folder with no base whose project does have a revision (pull first). `hlix
|
|
285
|
+
bootstrapped that way: if the cloud already has a revision but this folder has no base, push leaves both copies unchanged and reports that it needs a pull first. `hlix
|
|
276
286
|
pull` on a project with no cloud files exits `not_found` and names the way
|
|
277
287
|
forward.
|
|
278
288
|
|
|
@@ -326,7 +336,7 @@ Branch on `error.code`, never on `error.message`. Codes: `unauthenticated`,
|
|
|
326
336
|
`forbidden`, `not_found`, `conflict`, `invalid_request`, `bad_request`,
|
|
327
337
|
`rate_limited`, `not_implemented`, `server_error`, `unreachable`,
|
|
328
338
|
`missing_argument`, `invalid_usage`, `approval_required`, `cancelled`, `unknown_command`,
|
|
329
|
-
`workspace_mismatch`, `not_initialized`, `scan_blocked`,
|
|
339
|
+
`workspace_mismatch`, `not_initialized`, `scan_blocked`,
|
|
330
340
|
`workspace_required`, `invalid_base_url`, `missing_credential`, `unknown`.
|
|
331
341
|
|
|
332
342
|
That list is the complete set — `skill.test.ts` compares it against every code
|
|
@@ -391,3 +401,23 @@ of yours.
|
|
|
391
401
|
- **No `tasks logs`.** The log endpoint is not part of the published API
|
|
392
402
|
contract, and there is no log stream to follow. `tasks watch` streams task
|
|
393
403
|
*status*, which is a different thing and is named accordingly.
|
|
404
|
+
|
|
405
|
+
### Import recovery and project deletion
|
|
406
|
+
|
|
407
|
+
An interrupted import resumes the saved session in `.hlix/import.json` on the
|
|
408
|
+
next `hlix import` in that folder. Keep that file and `.hlix/import.bundle`
|
|
409
|
+
until it succeeds. A finalize timeout polls the same import for up to ten
|
|
410
|
+
minutes; rerun the command if the wait ends. Secret values are re-read from
|
|
411
|
+
local files only if finalization has not started. Restore changed files before
|
|
412
|
+
resuming an upload; completed imports bind without rescanning. If the server
|
|
413
|
+
confirms an unfinished session has expired, the CLI discards its saved recovery
|
|
414
|
+
files, reports it, and starts a fresh import. A completed or still-finalizing
|
|
415
|
+
session is never replaced just because its upload deadline passed.
|
|
416
|
+
|
|
417
|
+
`hlix projects delete <id|name>` prints the selected project's name
|
|
418
|
+
before deleting it. Names must match exactly and be unique; otherwise use the
|
|
419
|
+
ID. Interactive deletion asks for confirmation. Non-interactive deletion,
|
|
420
|
+
`--json`, and deletion of this folder's bound project require `--yes`.
|
|
421
|
+
Deletion removes the cloud project; local files are kept.
|
|
422
|
+
|
|
423
|
+
`push --dry-run` reports conflicts with exit 0 and makes no changes. The nonzero conflict verdict described above applies to `pull` and `sync`. Missing local push bindings and unreadable import recovery records likewise produce explicit no-op reports; no replacement project or upload is created.
|