kylon-cli 0.4.1-next.805 → 0.4.2

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 CHANGED
@@ -8,14 +8,6 @@ Only the `npx` spellings require your own Node.js 22.15.0 or newer.
8
8
 
9
9
  ## Install
10
10
 
11
- For Codex agents, Kylon prefers the CLI bundled with the Codex desktop app.
12
- Desktop app updates are discovered when Kylon next checks or starts Codex,
13
- including on Windows where each update can replace the executable's directory.
14
- If the desktop CLI is absent, Kylon uses the standalone CLI on PATH; setup and
15
- service repair install it with npm when neither is available. An explicitly
16
- selected executable remains unchanged, and desktop copies are updated by the
17
- desktop app rather than by Kylon.
18
-
19
11
  The recommended install is the hosted script (macOS/Linux):
20
12
 
21
13
  ```bash
@@ -436,11 +428,9 @@ state:
436
428
  - Use `kylon workspace secret list|share|unshare|delete|run` for canonical
437
429
  workspace secret grants with browser authorization. Create API keys through
438
430
  the secure Connection flow in Kylon.
439
- - Use `kylon gateway secret list|delete --agent <agent-id>` for agent-local
431
+ - Use `kylon gateway secret list|set|delete --agent <agent-id>` for agent-local
440
432
  records, authenticated by this installation's saved runtime credential
441
- through agent-scoped runtime routes. There is no `set`: a credential is
442
- stored as a Custom API Service from the agent's setup card or from
443
- Connections in Kylon, and the agent reads it from its environment.
433
+ through agent-scoped runtime routes.
444
434
 
445
435
  This separation prevents browser credentials from reaching the
446
436
  daemon-authenticated secret endpoints and avoids state-dependent command
@@ -547,77 +537,6 @@ instead of waiting out inactivity timeouts and heartbeat intervals.
547
537
  without the advertisement fails over-budget assignments with a named error
548
538
  instead of receiving flags it would misparse.
549
539
 
550
- ## Remote diagnostics
551
-
552
- The CLI reports to the server through one channel (`src/lib/telemetry.ts`):
553
- every logger record passes through it after redaction, and what leaves the
554
- machine depends on the identity the running operation selected. This is event
555
- logging into the API-to-Grafana Loki pipeline (`service=cli-client`), not
556
- OpenTelemetry/Tempo tracing. It never ships Grafana credentials and never falls
557
- back to another saved identity.
558
-
559
- - **Machine identity** (the computer daemon and its supervisor, locked by the
560
- computer session): posts to `POST /workspaces/:ws/computers/:id/client-events`
561
- every `warn`/`error` record, the info-level names on the shared inventory, and
562
- the daemon lifecycle events (`daemon.started`, `daemon.crash_detected`,
563
- `daemon.system_wake`, `daemon.shutdown`). Fields are flattened one level and
564
- bounded (32 keys, 300 characters); a prose message is normalized to a
565
- snake_case name with the wording kept in `text`. The server stamps
566
- `p2EventType=cli_daemon_event` and the machine's CLI version and OS, holds
567
- each machine to 300 events per 5 minutes, and announces what it dropped or
568
- rejected. The operator's `remoteDiagnostics` gateway setting is the consent
569
- for this path, read at every flush.
570
- - **User identity** (any other command once it has a credential): posts to
571
- `POST /client-logs/cli` under the event and field allowlists in
572
- `@p2/types/cli-telemetry`, so a command never uploads paths, prompts, argv,
573
- or arbitrary error text. Identity and workspace attribution come from server
574
- authentication, not client fields.
575
- - **Anonymous** (status (`status`/`auth status`, `gateway status`), `diagnose`,
576
- the upgrade commands (`upgrade`, `provider update`, `gateway service`)): the
577
- same URL without a credential, command outcomes only, with an even narrower
578
- metadata allowlist. The setup commands (`auth login`, `agent link`, `connect`,
579
- `onboard`) report anonymously only when they fail, with the setup session id
580
- from the link inspection and the stage they reached, and switch to the
581
- credential they obtain. Other commands never fall back to anonymous
582
- submission when authentication fails.
583
-
584
- Telemetry initialization calls the installation store's `ensure()`:
585
- `install.json` in the CLI configuration directory holds the random `installId`,
586
- sent as `install_id` on every record. It is created before login and reused
587
- across runs; deleting the file resets it, copying the configuration can
588
- duplicate it. It identifies an installation, not a device or a person, so these
589
- are pseudonymous diagnostics. If the installation cannot be read or created,
590
- telemetry stays off.
591
-
592
- Set `KYLON_TELEMETRY_DISABLED=1` in the CLI/daemon process environment to turn
593
- the whole channel off; local diagnostic logs are unchanged. Restart a running
594
- daemon after changing its environment.
595
-
596
- Delivery: a bounded queue of 200 records (oldest dropped first, the count
597
- announced as `gateway.remote_events.dropped_locally`), one batch of up to 20
598
- every five seconds, plus an immediate flush for the daemon lifecycle events. A
599
- `401`, `403`, or `404` stops the channel for the rest of the process; any other
600
- failure keeps the batch and backs off, doubling from 30 seconds to 5 minutes.
601
- Requests do not follow redirects; a command's request is cut after 2.5 seconds
602
- (a cold connection to the API takes 0.5–0.7 s, and a failed command uploads
603
- at exit with no connection to reuse), the daemon's after 5 seconds. A
604
- `cli.command_failed` record starts its upload at once rather than at the
605
- next interval. Normal command completion flushes the latest batch;
606
- hard kills can lose events. The API limits each user identity to 60 batches per
607
- minute and 32 KiB per batch, anonymous sources to 20 batches per minute per
608
- hashed IP.
609
-
610
- ### Event inventory
611
-
612
- Info-level names are the shared inventory in `@p2/types/cli-telemetry`:
613
- command lifecycle (`cli.command.started`, `cli.command.completed`,
614
- `cli.command_failed`, `cli.api.failed`), connection open/close, gateway
615
- connection failures and reconnect scheduling, assignment receipt and
616
- acceptance, provider execution, cancellation, result delivery and outbox
617
- replay, supervisor lifecycle, and upgrade outcomes. A machine identity adds
618
- every warn/error record and the daemon lifecycle; a user identity is limited to
619
- the inventory on both ends.
620
-
621
540
  ## State Model
622
541
 
623
542
  The CLI uses a per-agent installation profile and three runtime-state layers:
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.1-next.805",
3
- "fingerprint": "e96d66aab632a1704669c636abba1bce6a6bd057431005f0770bbf61cea0b089",
4
- "source_commit": "5f4c0f664331e1520f6a0f13a7889a9907b1d90e"
2
+ "version": "0.4.2",
3
+ "fingerprint": "62cd57e7980a237a26ea6161139b0a915aa5acaefa66eb3a2c0047f909a38054",
4
+ "source_commit": "ab7d78b1937c39c33e4fed04c164fb6e18f45d61"
5
5
  }