@jarel/myskills 0.1.0-beta.19 → 0.1.0-beta.20

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.
Files changed (3) hide show
  1. package/README.md +42 -4
  2. package/dist/index.js +845 -583
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -34,7 +34,7 @@ CLI tokens should be stored in the platform secret store where possible.
34
34
 
35
35
  ## Current Slice
36
36
 
37
- This document describes the `0.1.0-beta.18` source candidate, including named
37
+ This document describes the `0.1.0-beta.20` source candidate, including resumable browser login, named
38
38
  CLI configuration profiles and global/project inventory scopes. Source,
39
39
  GitHub releases, npm publication, and hosted deployment are separate states;
40
40
  see [release verification](../../docs/RELEASE.md) for their checks. Historical
@@ -78,7 +78,8 @@ myskills scan --path <file-directory-or-zip>
78
78
  myskills package --path <directory> --output <file.zip> [--json]
79
79
  myskills search [query] [--limit <1-100>] [--cursor <cursor>] [--api-url <url>]
80
80
  myskills info <skill-slug> [--version <exact-version>] [--api-url <url>]
81
- myskills login [--api-url <url>] [--method <password|api-key>] [--email <email>]
81
+ myskills login [--api-url <url>] [--method <password|api-key|browser>] [--email <email>]
82
+ myskills login --method browser [--api-url <url>] [--scopes <comma-separated-scopes>] [--no-resume]
82
83
  myskills login --api-key [--api-url <url>]
83
84
  myskills logout [--api-url <url>] [--token <token>]
84
85
  myskills whoami [--api-url <url>] [--token <token>]
@@ -326,7 +327,7 @@ Public npm publication is a separate release step.
326
327
 
327
328
  `validate`, `scan`, and `submit` accept a manifest file, package directory, or local `.zip` package. `login` prompts for the API URL when one is not supplied; the default is the local API at `http://localhost:3001`, and custom hosted URLs can be entered manually. Successful login stores the selected API URL in local CLI config so later commands can omit `--api-url`. API URL resolution is `--api-url`, then `MYSKILLS_API_URL`, then saved config, then `http://localhost:3001`.
328
329
 
329
- `login` supports an email/password session flow and an API-key flow. Password
330
+ `login` supports email/password, API-key and browser/device flows. Password
330
331
  login handles MFA challenges and stores the verified session token. API-key
331
332
  login validates the key with `/v1/me`. Token resolution is `--token`, then
332
333
  `MYSKILLS_TOKEN`, then the stored token. The default store uses the platform
@@ -337,6 +338,43 @@ confirmed absent. Explicit `MYSKILLS_TOKEN_STORE=file` or `MYSKILLS_TOKEN_FILE`
337
338
  selects file storage with user-only permissions. A successful keyring write
338
339
  clears the obsolete file entry.
339
340
 
341
+ `login --method browser` displays the consent URL, user code and deadline. Repeat
342
+ the command with the same API URL, configuration profile and `--scopes` choice to
343
+ resume after an interruption, including after browser approval. The pending
344
+ device secret stays in a separate OS keyring entry; it never enters config,
345
+ token files or terminal output. A process lock serializes polling and logout
346
+ for that API/profile. Its nonsecret owner metadata lives under the actual OS
347
+ account home, independent of `HOME` and configuration-directory overrides.
348
+ Only confirmed dead owners are reclaimed; ambiguous locks require operator
349
+ recovery. Denial, expiry during polling, redemption and logout clear the pending
350
+ entry. After process loss, expired keyring state is removed on the next login
351
+ or logout for that API/profile; there is no background cleanup process. Logout
352
+ discards a pending-only login locally; it does not cancel consent on the API.
353
+
354
+ Resume keeps the original server expiry and a conservative deadline measured
355
+ before the start request. Polling honors the saved interval, including
356
+ `slow_down`, and bounds each request to the remaining deadline. It never renews
357
+ consent, widens scopes, extends MFA assurance or changes token lifetime.
358
+ Changing `--scopes` while a login is pending requires logout first.
359
+
360
+ Keyring access is required for automatic resume even when final token storage
361
+ was explicitly set to a file. A host without keyring access, including many
362
+ cloud runners, can explicitly choose `--no-resume` for an in-memory request.
363
+ That option cannot replace a readable existing pending login: logout first.
364
+ If keyring access is unavailable, the CLI warns that old pending state could
365
+ not be checked; restore access and run logout before using resume again.
366
+ There is no plaintext fallback for pending state.
367
+
368
+ Expiry, interruption, denial, token-save failure and config-save failure have
369
+ distinct JSON error codes. If the server redeemed approval but the response was
370
+ lost, or credential saving was not confirmed, the one-time code cannot recover
371
+ the token. Check `auth status` with the same API/profile and, when needed,
372
+ revoke the CLI browser login token in account settings before starting again.
373
+ A config-save failure explicitly reports that the credential was saved; pass
374
+ `--api-url` until the configuration store is repaired. Cleanup failures remain
375
+ visible, and keyring-unavailable logout still attempts the selected credential's
376
+ normal local deletion or remote session revocation.
377
+
340
378
  `auth status` validates the token without printing it. `logout` revokes stored
341
379
  sessions and clears local credentials. If a malformed keyring entry prevents
342
380
  revocation, logout attempts local deletion and reports that remote revocation
@@ -543,7 +581,7 @@ that adoption before it changes files. Without it, the operation fails with
543
581
  changed. The CLI never widens a token's scopes. This command checks current
544
582
  authorization, consent, policy, lease, and exact release identity. It does not
545
583
  start a background daemon.
546
- Browser/device login and additional provider install adapters remain planned.
584
+ Additional provider install adapters remain planned.
547
585
 
548
586
  To change skill visibility, use the canonical `myskills sharing set
549
587
  <skill-slug> --visibility <scope>` command. It accepts either