cuelo 0.10.97 → 0.10.98
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +28 -28
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/updates/apply/route.js +2 -2
- package/.next/server/app/api/updates/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page.js +3 -3
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover.html +1 -1
- package/.next/server/app/recover.rsc +2 -2
- package/.next/server/app/recover.segments/_full.segment.rsc +2 -2
- package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
- package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
- package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +28 -28
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/app/{layout-e946c4e8f6b1554d.js → layout-d2bfa4fce6fa556d.js} +1 -1
- package/.next/static/chunks/app/{page-0b878506cec78452.js → page-aa13cfbae06fb314.js} +3 -3
- package/.next/trace +108 -108
- package/.next/trace-build +1 -1
- package/README.md +12 -9
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
- package/Tools/CUELO_Setup/files/usage-server.js +15 -7
- package/bin/cuelo.js +2 -2
- package/install.mjs +17 -5
- package/package.json +1 -1
- /package/.next/static/{VSLxmLHaJ0rBK71SMfdbr → Z8RhBlT9W_aqwDClhD7F_}/_buildManifest.js +0 -0
- /package/.next/static/{VSLxmLHaJ0rBK71SMfdbr → Z8RhBlT9W_aqwDClhD7F_}/_ssgManifest.js +0 -0
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-webpack","duration":
|
|
1
|
+
[{"name":"run-webpack","duration":89417062,"timestamp":490282,"id":14,"parentId":1,"tags":{},"startTime":1793158358280,"traceId":"876cb0608e9f5869"},{"name":"run-typescript","duration":18612539,"timestamp":90279546,"id":11054,"parentId":1,"tags":{},"startTime":1793158448069,"traceId":"876cb0608e9f5869"},{"name":"static-check","duration":3458161,"timestamp":108973388,"id":11057,"parentId":1,"tags":{},"startTime":1793158466763,"traceId":"876cb0608e9f5869"},{"name":"static-generation","duration":6643919,"timestamp":112532873,"id":11231,"parentId":1,"tags":{},"startTime":1793158470322,"traceId":"876cb0608e9f5869"},{"name":"collect-build-traces","duration":19782461,"timestamp":112510132,"id":11228,"parentId":1,"tags":{},"startTime":1793158470300,"traceId":"876cb0608e9f5869"},{"name":"telemetry-flush","duration":56,"timestamp":132296936,"id":11240,"parentId":1,"tags":{},"startTime":1793158490086,"traceId":"876cb0608e9f5869"},{"name":"next-build","duration":131888424,"timestamp":408594,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1793158358198,"traceId":"876cb0608e9f5869"}]
|
package/README.md
CHANGED
|
@@ -242,7 +242,7 @@ cuelo health
|
|
|
242
242
|
|
|
243
243
|
앱과 세 사이드카가 같은 터미널에서 실행됩니다. 브라우저에서 [http://127.0.0.1:30141](http://127.0.0.1:30141)을 열고 본인 계정으로 로그인한 뒤 모델을 선택하세요. 기본은 `127.0.0.1` 전용이며, Ctrl+C로 실행한 서비스를 종료합니다.
|
|
244
244
|
|
|
245
|
-
다른 터미널에서 `node install.mjs health`(npm 설치는 `cuelo health`)로 네 서비스의 응답을 확인합니다. 기존 설치와 다른 포트가 필요하면 `start`와 `health` 양쪽에 `--port-base 31141`처럼 지정합니다. 이 검사는 제공자 인증·Jev 판정·사용량 응답을 검증하지 않습니다.
|
|
245
|
+
다른 터미널에서 `node install.mjs health`(npm 설치는 `cuelo health`)로 네 서비스의 응답을 확인합니다. 기존 설치와 다른 포트가 필요하면 `start`와 `health` 양쪽에 `--port-base 31141`처럼 지정합니다. 이 검사는 제공자 인증·Jev 판정·사용량 응답을 검증하지 않습니다. 비밀번호 잠금을 켰다면 `health`를 실행하는 셸에 `CUELO_PASSWORD`를 지정해야 앱 검사가 통과합니다. 자세한 내용은 설치 문서의 「5. 상태 확인」 절을 참고하세요.
|
|
246
246
|
|
|
247
247
|
처음 설치하거나 Claude·Codex에 설치를 맡길 때는 **[새 Windows 설치와 실행 안내](./docs/installation.md)**를 기준으로 하세요. 포함 파일과 외부 필수 항목, Jev 제공자 키·역할 설정, 기능별 CLI/Git 요구사항이 따로 적혀 있습니다. 기존 프로필 파일은 자동으로 덮어쓰지 않으며, 제공자 로그인·권한 승인·모델 선택은 사용자 단계입니다. 빈 Windows PC 전체를 실제 검증한 것은 아닙니다.
|
|
248
248
|
|
|
@@ -262,9 +262,17 @@ bun bin/cuelo.js --reset-password # 비밀번호 재설정
|
|
|
262
262
|
|
|
263
263
|
새 CUELO 릴리스가 나오면 사이드바 아래에 알림이 뜹니다. 알림을 열면 릴리스 노트와 「지금 업데이트」 버튼이 있습니다. 버튼을 누르고 한 번 확인하면 별도로 명령을 실행하지 않아도 CUELO가 스스로 새 릴리스를 받아 설치하고 서버를 다시 시작합니다. 업데이트하는 동안 서버가 잠시 멈추고 실행 중인 세션은 중단됩니다. 확인 문구에 실행 중인 세션 수가 표시됩니다. 화면에는 진행 단계가 나타나고 새 버전이 응답하면 스스로 새로 고칩니다. 실패하면 오류 내용과 로그 파일 경로를 보여 줍니다.
|
|
264
264
|
|
|
265
|
-
갱신 방식은 설치 환경에 맞춰 서버가 고릅니다. npm 전역 설치(`npm install -g cuelo`)는 `npm install -g cuelo
|
|
265
|
+
갱신 방식은 설치 환경에 맞춰 서버가 고릅니다. npm 전역 설치(`npm install -g cuelo`)는 `npm install -g cuelo@<버전>` 명령으로 교체합니다. 소스 체크아웃에서는 다음 다섯 조건을 모두 만족할 때 「지금 업데이트」 버튼이 작동합니다.
|
|
266
266
|
|
|
267
|
-
|
|
267
|
+
- 서버를 `node install.mjs start`로 실행했습니다.
|
|
268
|
+
- 운영 빌드가 있습니다(개발 서버는 제외).
|
|
269
|
+
- 작업 트리에 커밋하지 않은 변경이 없습니다.
|
|
270
|
+
- 체크아웃이 브랜치 위에 있습니다(분리된 HEAD는 제외).
|
|
271
|
+
- 알림이 안내한 릴리스 태그가 원격에 있습니다.
|
|
272
|
+
|
|
273
|
+
버튼을 누르면 서버를 멈추고 해당 릴리스 태그로 브랜치를 fast-forward한 뒤 `node install.mjs setup`을 실행하고 서버를 다시 시작합니다. 서버를 `--home <dir>`로 시작했다면 같은 옵션이 `setup`에 그대로 전달됩니다. 빌드에 실패하면 이전 릴리스로 되돌립니다.
|
|
274
|
+
|
|
275
|
+
위 조건을 하나라도 만족하지 못하거나 설치 방식을 알아볼 수 없으면 버튼 대신 수동 명령을 화면에 표시합니다. 서버(또는 개발 서버)를 먼저 멈춘 뒤 `git pull --ff-only && node install.mjs setup`을 실행하세요. `setup`이 실행 중인 서버가 읽는 `.next/` 빌드 폴더를 새로 만들기 때문입니다. `setup`은 `bun install --frozen-lockfile`, SDK 소스 준비, 빌드, 패치와 고지문 적용·검사를 차례로 합니다. 끝나면 `node install.mjs start`로 서버를 다시 켭니다. `--home <dir>`로 시작했다면 `node install.mjs setup --home <dir>`처럼 같은 옵션을 붙이세요.
|
|
268
276
|
|
|
269
277
|
앱 업데이트와 프로필(하네스) 업데이트는 따로입니다. 앱을 업데이트해도 기존 프로필의 하네스·역할 설정은 덮어쓰지 않습니다. 새 버전의 하네스는 `node install.mjs harness-diff`로 차이를 보고 `node install.mjs harness-update`로 반영합니다. 사용자가 고치지 않은 파일만 백업 후 바꾸고, 고친 파일과 `config.yml`은 그대로 둡니다([기존 프로필의 하네스 갱신](./docs/installation.md#기존-프로필의-하네스-갱신)). 반영 후 CUELO와 `omp`를 다시 시작하세요.
|
|
270
278
|
|
|
@@ -272,11 +280,6 @@ bun bin/cuelo.js --reset-password # 비밀번호 재설정
|
|
|
272
280
|
|
|
273
281
|
대기 화면의 CUELO 심볼과 단계 표시는 서버가 응답하고 진행 단계를 확인한 동안에만 움직입니다. 서버 연결이 끊기거나 업데이트가 중단되면 움직임을 멈추고 상태를 표시합니다. 기기의 ‘동작 줄이기’ 설정을 켜면 같은 정보를 정지한 상태로 보여 줍니다.
|
|
274
282
|
|
|
275
|
-
Windows의 WSL Ubuntu에서 실행 중인 CUELO를 갱신하는 동안에는 WSL 연결을 유지하고, 열려 있는 화면에 세션 정지·준비·패키지 교체·확인 단계를 표시합니다. 서버가 내려가 응답하지 않는 동안에는 마지막으로 확인한 단계를 그대로 표시하고 아직 확인하지 못한 단계로 앞서가지 않으며, 갱신이 끝나면 원래 대화로 돌아옵니다. 새 서버가 실행 중이고 응답하면 갱신 완료 화면에서 멈추지 않고 마칩니다. 서비스가 멈춘 것을 확인한 뒤에만 파일과 프로필을 바꾸고, 실패하면 실행 중이던 버전을 그대로 두거나 이전 버전으로 복구합니다. 복구가 끝난 갱신도 완료로 인식합니다.
|
|
276
|
-
|
|
277
|
-
WSL 갱신에서는 시스템 시각이 보정되어도 실행 중인 서버를 같은 서버로 인식해, 진행 중인 대화의 중단·재개 절차를 건너뛰지 않습니다.
|
|
278
|
-
WSL 갱신은 실행 중인 서버와 분리해 새 버전을 미리 빌드한 뒤 교체합니다. 빌드 캐시는 재사용하고 다시 만들 산출물은 복사하지 않아 준비 과정의 디스크 쓰기를 줄입니다.
|
|
279
|
-
|
|
280
283
|
공개 웹 소스 릴리스와 변경 내용은 [GitHub Releases](https://github.com/gim47656-ship-it/CUELO/releases)에서 확인하세요. 새 `package.json` 버전이 공개 `main`에 올라가 CI가 성공하면 GitHub 릴리스와 npm `cuelo` 게시가 자동으로 실행됩니다([릴리스 절차](./docs/release.md)).
|
|
281
284
|
|
|
282
285
|
### 사이드카 서비스
|
|
@@ -311,7 +314,7 @@ bun run test:coverage # 앱·설치기 테스트 + 커버리지 표
|
|
|
311
314
|
|
|
312
315
|
개발 서버를 쓰는 동안 같은 출력 경로에 `bun run build`를 돌리지 마세요. `.next/`를 덮어써서 개발 서버가 깨집니다. 검증용 production 빌드는 별도 소스 복사본이나 격리된 `CUELO_DIST_DIR`에서 실행하세요.
|
|
313
316
|
|
|
314
|
-
공개 CI는 이전에 앱 검사까지 성공한 소스와 비교해 실행 범위를 정합니다. `main`의 변경이 확인된 문서·하네스 지시문뿐이면 앱 빌드는 생략하고 하네스 검사는 유지합니다. 코드·의존성·버전·워크플로우 변경, PR, 수동 실행이나 분류가 불확실한 경우에는 전체 검사를 실행합니다.
|
|
317
|
+
공개 CI는 이전에 앱 검사까지 성공한 소스와 비교해 실행 범위를 정합니다. `main`의 변경이 확인된 문서·하네스 지시문뿐이면 앱 빌드는 생략하고 하네스 검사는 유지합니다. 코드·의존성·버전·워크플로우 변경, PR, 수동 실행이나 분류가 불확실한 경우에는 전체 검사를 실행합니다.
|
|
315
318
|
|
|
316
319
|
의존성을 다시 설치하거나 갱신한 뒤에는 `bun run prepare:source`를 다시 실행하세요. 이미 설치된 작업 사본에서도 `bun install`은 패치된 SDK 패키지를 원본으로 다시 깔기 때문에, 준비 단계를 빼면 호환 패치가 빠진 채로 실행됩니다. 이 준비 단계는 작업 사본의 SDK만 다루며 사용자 프로필이나 실행 중인 설치본을 변경하지 않습니다.
|
|
317
320
|
|
|
@@ -9,7 +9,7 @@ const MEMORY_RE = /(const phase1Model = await resolveMemoryModel\(\{[^}]*?fallba
|
|
|
9
9
|
const MEMORY_DONE = /const phase1Model = await resolveMemoryModel\(\{[^}]*?fallbackRole: "smol"/;
|
|
10
10
|
const EXPECTED = {
|
|
11
11
|
name: 'cuelo',
|
|
12
|
-
version: '0.10.
|
|
12
|
+
version: '0.10.98',
|
|
13
13
|
distribution: 'cuelo',
|
|
14
14
|
coreVersion: '18.13.2',
|
|
15
15
|
};
|
|
@@ -20,13 +20,20 @@ const { randomUUID } = require('node:crypto');
|
|
|
20
20
|
// (돌고 있는 사이드카를 죽이지 않아도 된다). OMP_EXE 와 같은 성격의 탈출구다.
|
|
21
21
|
const PORT = Number(process.env.OMP_USAGE_PORT || 30142);
|
|
22
22
|
// omp 실행 파일. setup 은 PATH 에 있는 omp 도 허용하므로 기본 위치에만 의존하면
|
|
23
|
-
// 설치는 통과하고 USAGE 만 조용히 실패한다. 기본 위치 ->
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
// 설치는 통과하고 USAGE 만 조용히 실패한다. 환경변수 -> Windows 기본 위치 -> 이 패키지가 설치한
|
|
24
|
+
// omp(Linux/macOS) -> PATH 순으로 쓴다. 마지막 단계가 없으면 Linux/macOS 새 설치는 'omp.exe'를
|
|
25
|
+
// 찾다 실패해 리소스 패널의 모델·통계가 비어 있었다(공개본 신규 설치 시험, 2026-10-28).
|
|
26
|
+
function resolveOmpExecutable({ platform = process.platform, env = process.env, root = path.join(__dirname, '..', '..', '..'), exists = fs.existsSync } = {}) {
|
|
27
|
+
if (env.OMP_EXE) return env.OMP_EXE;
|
|
28
|
+
if (platform === 'win32') {
|
|
29
|
+
const fixed = path.join(env.LOCALAPPDATA || '', 'omp', 'omp.exe');
|
|
30
|
+
if (env.LOCALAPPDATA && exists(fixed)) return fixed;
|
|
31
|
+
return 'omp.exe'; // Windows 는 실행 시 PATH 를 뒤진다
|
|
32
|
+
}
|
|
33
|
+
const owned = path.join(root, 'node_modules', '.bin', 'omp');
|
|
34
|
+
return exists(owned) ? owned : 'omp';
|
|
35
|
+
}
|
|
36
|
+
const OMP = resolveOmpExecutable();
|
|
30
37
|
const ORIGIN = 'http://127.0.0.1:' + (Number(process.env.PORT) || 30141);
|
|
31
38
|
const CACHE_MS = 60_000;
|
|
32
39
|
// 만료 뒤 이 나이까지는 직전 스냅샷을 바로 내고 뒤에서 새로 조회한다. 콜드 조회(0.25s~수 초)가
|
|
@@ -1711,6 +1718,7 @@ if (require.main === module) {
|
|
|
1711
1718
|
|
|
1712
1719
|
module.exports = {
|
|
1713
1720
|
startServer,
|
|
1721
|
+
resolveOmpExecutable,
|
|
1714
1722
|
startExpirySweep,
|
|
1715
1723
|
claimResetAttempt,
|
|
1716
1724
|
createControlFacade,
|
package/bin/cuelo.js
CHANGED
|
@@ -49,8 +49,8 @@ if (process.argv.includes("--help") || process.argv.includes("-h")) {
|
|
|
49
49
|
|
|
50
50
|
Usage: cuelo [options]
|
|
51
51
|
cuelo setup [--home <dir>] [--model <provider/model>] [--role <name>=<provider/model[:effort]>]
|
|
52
|
-
cuelo start [--home <dir>]
|
|
53
|
-
cuelo health
|
|
52
|
+
cuelo start [--home <dir>] [--port-base <n>] [--hostname <address>]
|
|
53
|
+
cuelo health [--port-base <n>]
|
|
54
54
|
cuelo harness-diff [--home <dir>] [--json]
|
|
55
55
|
cuelo harness-update [--home <dir>] [--dry-run] [--json]
|
|
56
56
|
|
package/install.mjs
CHANGED
|
@@ -501,9 +501,19 @@ export function dropInTreeBunCache(buildHome) {
|
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
503
|
|
|
504
|
+
/** A source checkout has the lockfile and the app sources; an installed npm package ships only the build. */
|
|
505
|
+
function isSourceCheckout() {
|
|
506
|
+
return fs.existsSync(path.join(ROOT, "bun.lock")) && fs.existsSync(path.join(ROOT, "app", "layout.tsx"));
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/** How the user runs this installer: `cuelo` from an npm install (no install.mjs in their folder), `node install.mjs` from a checkout. */
|
|
510
|
+
function cliCommand() {
|
|
511
|
+
return isSourceCheckout() ? "node install.mjs" : "cuelo";
|
|
512
|
+
}
|
|
513
|
+
|
|
504
514
|
function prepareRuntime() {
|
|
505
515
|
const node = process.versions.bun ? "node" : process.execPath;
|
|
506
|
-
const sourceCheckout =
|
|
516
|
+
const sourceCheckout = isSourceCheckout();
|
|
507
517
|
if (!sourceCheckout) {
|
|
508
518
|
// An installed package ships its production build and patched SDK; only confirm them.
|
|
509
519
|
run(node, [path.join(ROOT, "bin", "prepare-runtime.js"), "--check"], { cwd: ROOT });
|
|
@@ -557,14 +567,14 @@ function setup(options) {
|
|
|
557
567
|
const harness = copyHarness(path.join(ROOT, "Tools", "OMP_Global_Config", "agent"), agentDir, harnessEntries(pkg.files ?? []));
|
|
558
568
|
const recorded = recordHarnessInstall(agentDir, harness, pkg.version);
|
|
559
569
|
if (recorded.skipped) console.log(`Warning: the harness install record was left unchanged because it cannot be read (${recorded.skipped}). harness-diff and harness-update refuse to run until you fix or delete it.`);
|
|
560
|
-
console.log(`Harness: ${harness.created.length} files added to ${agentDir}, ${harness.kept.length} existing files kept unchanged. Later:
|
|
570
|
+
console.log(`Harness: ${harness.created.length} files added to ${agentDir}, ${harness.kept.length} existing files kept unchanged. Later: \`${cliCommand()} harness-diff\` shows how the profile differs from this version.`);
|
|
561
571
|
const roles = createProfileConfig(agentDir, options.roles);
|
|
562
572
|
if (roles.written) console.log(`Profile config: wrote ${roles.configPath}.`);
|
|
563
573
|
if (roles.ignored.length > 0) console.log(`Profile config: ${roles.configPath} already exists and was not changed; ignored ${roles.ignored.join(", ")}.`);
|
|
564
574
|
if (roles.missing.length > 0) {
|
|
565
575
|
console.log(`Model roles not set: ${roles.missing.join(", ")}. Choose only the roles you use in CUELO Settings > Models > Model roles; built-in roles may use core defaults.`);
|
|
566
576
|
}
|
|
567
|
-
console.log(
|
|
577
|
+
console.log(`Next: run \`${cliCommand()} start\`, open the address it prints, and sign in to your providers under Settings > Models.`);
|
|
568
578
|
}
|
|
569
579
|
|
|
570
580
|
async function portAnswers(port) {
|
|
@@ -612,7 +622,9 @@ function recordSupervisor(options) {
|
|
|
612
622
|
}
|
|
613
623
|
|
|
614
624
|
async function start(options) {
|
|
615
|
-
if (!fs.existsSync(path.join(ROOT, ".next", "BUILD_ID")))
|
|
625
|
+
if (!fs.existsSync(path.join(ROOT, ".next", "BUILD_ID"))) {
|
|
626
|
+
throw new Error(isSourceCheckout() ? "No production build found. Run `node install.mjs setup` first." : "This package has no production build (.next/BUILD_ID). Reinstall it with `npm install -g cuelo`.");
|
|
627
|
+
}
|
|
616
628
|
const { env } = resolveProfile(options.home);
|
|
617
629
|
const services = servicePorts(options.portBase, env);
|
|
618
630
|
const busy = [];
|
|
@@ -708,7 +720,7 @@ async function main(argv) {
|
|
|
708
720
|
} catch (error) {
|
|
709
721
|
if (!(error instanceof UsageError)) throw error;
|
|
710
722
|
console.error(error.message);
|
|
711
|
-
console.error(
|
|
723
|
+
console.error(`Usage: ${cliCommand()} [setup|start|health|harness-diff|harness-update] [--home <dir>] [--model <provider/model>] [--role <name>=<provider/model[:effort]>] [--port-base <n>] [--hostname <address>] [--json] [--dry-run]`);
|
|
712
724
|
return 2;
|
|
713
725
|
}
|
|
714
726
|
try {
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|