kylon-cli 0.7.5-next.1059 → 0.7.5-next.1070
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 +93 -32
- package/dist/kylon-bundle.manifest.json +3 -3
- package/dist/kylon-bundle.mjs +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -427,17 +427,16 @@ currently published target plus a 0-100% stable per-computer rollout for
|
|
|
427
427
|
automatic updates. A missing, disabled, mismatched, or 0% policy sends no
|
|
428
428
|
automatic request; manual upgrades still resolve the dist-tag normally.
|
|
429
429
|
|
|
430
|
-
|
|
431
|
-
(`.github/workflows/cli-publish.yml`).
|
|
432
|
-
`
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
`npm publish` ad hoc: both paths use the CI workflow and its OIDC publisher.
|
|
430
|
+
Qualifying merges to `develop` publish prereleases to `next`
|
|
431
|
+
(`.github/workflows/cli-publish.yml`). Stable publication is optional: request
|
|
432
|
+
`publish_cli=true` on a production Deploy from `main`, or label its merged main
|
|
433
|
+
PR `release:cli`. After the Deploy finishes successfully, a separate workflow
|
|
434
|
+
runs fresh full CLI qualification and publishes the exact package version to
|
|
435
|
+
`latest`. A standalone stable dispatch runs from current `main` and requires
|
|
436
|
+
already-deployed services. Bump the package version before a stable release.
|
|
437
|
+
|
|
438
|
+
Stable tags are release records, not publication triggers. Do not run
|
|
439
|
+
`npm publish` ad hoc: both stable entry points use CI and its OIDC publisher.
|
|
441
440
|
Development installs `@next` and production installs `@latest`, so each
|
|
442
441
|
environment tracks its own release train.
|
|
443
442
|
|
|
@@ -774,6 +773,31 @@ instead of waiting out inactivity timeouts and heartbeat intervals.
|
|
|
774
773
|
without the advertisement fails over-budget assignments with a named error
|
|
775
774
|
instead of receiving flags it would misparse.
|
|
776
775
|
|
|
776
|
+
## macOS startup logs and external config volumes
|
|
777
|
+
|
|
778
|
+
The macOS service writes startup stdout and stderr to
|
|
779
|
+
`~/Library/Logs/KylonGateway/launchd.stdout.log` and `launchd.stderr.log`.
|
|
780
|
+
These paths are independent of `~/.kylon` and `XDG_CONFIG_HOME`: launchd must
|
|
781
|
+
open its output files before Node can request access to a removable volume.
|
|
782
|
+
Install, upgrade, repair, and desktop first-time service creation use the same
|
|
783
|
+
paths and prepare the log directory with mode `0700` and files with `0600`.
|
|
784
|
+
Oversized startup files rotate at service installation/repair (10 MiB, three
|
|
785
|
+
files per stream). Existing daemon logs are retained at `<configDir>/gateway.log`.
|
|
786
|
+
Node and provider tools may still need macOS permission to access external data.
|
|
787
|
+
|
|
788
|
+
`kylon gateway status` shows both locations, including when the daemon could
|
|
789
|
+
not start. Its JSON keeps `daemon.log_path` for compatibility and adds
|
|
790
|
+
`daemon.startup_log_paths` on macOS. Upgrade failure guidance reads recent
|
|
791
|
+
errors from both daemon and startup stderr logs.
|
|
792
|
+
|
|
793
|
+
`kylon diagnose` and its upload collect both kinds of logs. The same collector
|
|
794
|
+
serves server-requested error diagnostics; self-diagnosis also sees the current
|
|
795
|
+
startup tails. Raw startup output is redacted at collection time, leaf symlinks
|
|
796
|
+
are not followed, and startup tails are capped at 1 MiB per file (256 KiB for a
|
|
797
|
+
scoped error bundle). Missing logs do not prevent collecting other evidence.
|
|
798
|
+
Full bundles keep three startup files per stream; scoped bundles keep two.
|
|
799
|
+
Linux and Windows retain their existing log paths.
|
|
800
|
+
|
|
777
801
|
## Remote diagnostics
|
|
778
802
|
|
|
779
803
|
The CLI reports to the server through one channel (`src/lib/telemetry.ts`):
|
|
@@ -1094,9 +1118,9 @@ API server is the security boundary.
|
|
|
1094
1118
|
The CLI ships via **npm dist-tags** — there is no server-side version policy.
|
|
1095
1119
|
`cli-verify.yml` validates on PRs and pushes; `cli-publish.yml` publishes via
|
|
1096
1120
|
OIDC (no token): a prerelease to the `next` tag on every qualifying merge to
|
|
1097
|
-
`develop`, and
|
|
1098
|
-
|
|
1099
|
-
|
|
1121
|
+
`develop`, and an optionally requested stable release from current `main` to
|
|
1122
|
+
`latest`, after the web/server deploy and fresh complete CLI qualification.
|
|
1123
|
+
Development installs `@next`; production installs `@latest`.
|
|
1100
1124
|
|
|
1101
1125
|
### Versioning
|
|
1102
1126
|
|
|
@@ -1111,30 +1135,26 @@ Use explicit semver in `packages/cli/package.json`:
|
|
|
1111
1135
|
Prerelease builds are versioned `<package-version>-next.<run>` automatically by
|
|
1112
1136
|
`cli-publish.yml`. Stable mode publishes the exact package version and skips
|
|
1113
1137
|
idempotently if npm already has it. Bump `packages/cli/package.json` whenever a
|
|
1114
|
-
new production CLI build must be published
|
|
1115
|
-
|
|
1138
|
+
new production CLI build must be published. Service deployment alone leaves
|
|
1139
|
+
`latest` unchanged.
|
|
1116
1140
|
|
|
1117
1141
|
### Publishing
|
|
1118
1142
|
|
|
1119
1143
|
- **Prerelease (automatic):** every merge to `develop` touching the CLI publishes
|
|
1120
1144
|
`<package-version>-next.<run>` to the `next` tag via `cli-publish.yml` (OIDC, no
|
|
1121
1145
|
`NPM_TOKEN`). dev tracks this tag, so dev always dogfoods the newest build.
|
|
1122
|
-
- **Stable (
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
- **Stable
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
```
|
|
1135
|
-
|
|
1136
|
-
Do not `npm publish` ad hoc: production deploys and release tags both go through
|
|
1137
|
-
the workflow so the OIDC provenance path is exercised end to end.
|
|
1146
|
+
- **Stable after services (optional):** set `publish_cli=true` on a production
|
|
1147
|
+
`deploy.yml` dispatch from `main`, or add `release:cli` to the merged main PR.
|
|
1148
|
+
`cli-post-deploy.yml` waits for that Deploy's successful completion and starts
|
|
1149
|
+
the independent test/verify/publish task. Default service deploys skip it.
|
|
1150
|
+
- **Stable standalone:** dispatch `cli-publish.yml` from `main` with
|
|
1151
|
+
`release_channel=stable`. It verifies the current main commit came through a merged main
|
|
1152
|
+
PR and that its service changes have deployed. CLI-only changes can follow
|
|
1153
|
+
the already-deployed ancestor. Both stable paths run full provider E2E and
|
|
1154
|
+
platform verification; prior PR CI evidence does not replace fresh proof.
|
|
1155
|
+
|
|
1156
|
+
Do not `npm publish` ad hoc: use the stable workflow and its OIDC provenance.
|
|
1157
|
+
Pushing a version tag alone does not publish.
|
|
1138
1158
|
|
|
1139
1159
|
### Rollback
|
|
1140
1160
|
|
|
@@ -1153,6 +1173,47 @@ direction guard keeps a newer installed bundle over an older invoked copy, and
|
|
|
1153
1173
|
`kylon upgrade` reports such a host as already current — so the way back for
|
|
1154
1174
|
those hosts is publishing a fixed, higher version. Do not `npm unpublish`.
|
|
1155
1175
|
|
|
1176
|
+
### Server compatibility without a CLI release
|
|
1177
|
+
|
|
1178
|
+
Service-only releases do not run the complete provider E2E matrix. They keep
|
|
1179
|
+
two cheaper checks in CI:
|
|
1180
|
+
|
|
1181
|
+
- `cli-service-compat-contract.test.ts` sends independently versioned 0.7.4
|
|
1182
|
+
request templates through the candidate API's real computer-key auth,
|
|
1183
|
+
connection fence, task leases and reply persistence. The templates in
|
|
1184
|
+
`scripts/ci/contracts/kylon-0.7.4.json` intentionally omit newer optional
|
|
1185
|
+
capability fields. Keep this compatibility floor fixed; a new required field
|
|
1186
|
+
must remain compatible with it rather than updating both sides of the test.
|
|
1187
|
+
- For backend, shared, CLI, root build or unclassified changes, the reusable
|
|
1188
|
+
`CLI service compatibility` workflow downloads the current production stable
|
|
1189
|
+
CLI, checks both public installer versions against npm `latest`, freezes its
|
|
1190
|
+
exact version/integrity, and runs its foreground daemon against this commit's
|
|
1191
|
+
local API with isolated PostgreSQL/Redis. A deterministic Claude process
|
|
1192
|
+
supplies tool/text/result events without model calls or provider credentials.
|
|
1193
|
+
The workflow verifies completed task/message persistence and uploads the
|
|
1194
|
+
candidate SHA, package digest and executed-test report. Missing or skipped
|
|
1195
|
+
cases fail the existing required `Tests` context. Display-only web/admin,
|
|
1196
|
+
desktop/mobile, documentation and Grafana configuration changes skip this
|
|
1197
|
+
extra smoke; unknown paths and missing diff history run it conservatively.
|
|
1198
|
+
|
|
1199
|
+
The contract test also participates in normal affected-code Vitest selection.
|
|
1200
|
+
The smoke is excluded from that suite to avoid downloading/running a second
|
|
1201
|
+
client for every unrelated test run. Run both locally, **sequentially** (database
|
|
1202
|
+
preparation rebuilds the worktree's isolated schema):
|
|
1203
|
+
|
|
1204
|
+
```sh
|
|
1205
|
+
node scripts/ci/prepare-cli-service-compat.mjs /tmp/cli-compat-stable
|
|
1206
|
+
CLI_COMPAT_PACKAGE_DIR=/tmp/cli-compat-stable bash scripts/test-local.sh --full -- --config scripts/ci/vitest-cli-service-compat.config.ts
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
This is a pre-merge protocol gate, not production/browser login evidence or
|
|
1210
|
+
real-provider E2E. Direct hotfix/patch deployment outside the normal PR gate
|
|
1211
|
+
must run `cli-service-compat.yml` manually on the target ref and check its SHA;
|
|
1212
|
+
the workflow neither publishes nor deploys. Major protocol changes can still
|
|
1213
|
+
request `external-agent:full`. Stable CLI publication always runs fresh full
|
|
1214
|
+
provider/platform qualification after the service deployment, independently
|
|
1215
|
+
of these cheap checks.
|
|
1216
|
+
|
|
1156
1217
|
### Gemini CLI
|
|
1157
1218
|
|
|
1158
1219
|
Install stable Gemini CLI 0.58.0 or newer with
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.7.5-next.
|
|
3
|
-
"fingerprint": "
|
|
4
|
-
"source_commit": "
|
|
2
|
+
"version": "0.7.5-next.1070",
|
|
3
|
+
"fingerprint": "1668173106e535e96464f7848fcb01598db7b56e181bcb2ef4b7172e95c1fbfe",
|
|
4
|
+
"source_commit": "426e8cfe32c12574e2e083adf5118b4066dbc125"
|
|
5
5
|
}
|