@uru-intelligence/cli 0.3.55 → 0.3.57

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 +53 -22
  2. package/dist/uru.mjs +1416 -806
  3. package/package.json +14 -4
package/README.md CHANGED
@@ -29,11 +29,6 @@ bun src/index.ts link --workspace <workspace-id> --path 'library/Golden Gems/My
29
29
  # Initialize and operate Gems through first-class Gem commands.
30
30
  bun src/index.ts init 'library/Golden Gems/My Gem.gem' --file ./main.html
31
31
  bun src/index.ts build 'library/Golden Gems/My Gem.gem' --dry-run --outdir ./dist/uru
32
- bun src/index.ts deploy 'library/Golden Gems/My Gem.gem'
33
- bun src/index.ts deploy 'library/Golden Gems/My Gem.gem' --skip-promote --no-wait
34
- bun src/index.ts deploy 'library/Golden Gems/My Gem.gem' --prod --skip-promote --no-wait
35
- bun src/index.ts promote <version-id> --link-id <link-id>
36
- bun src/index.ts rollback <version-id> --link-id <link-id> --yes
37
32
  bun src/index.ts status 'library/Golden Gems/My Gem.gem' --json
38
33
  bun src/index.ts logs 'library/Golden Gems/My Gem.gem' --limit 100
39
34
  bun src/index.ts logs 'library/Golden Gems/My Gem.gem' --follow
@@ -42,11 +37,21 @@ bun src/index.ts open 'library/Golden Gems/My Gem.gem'
42
37
  bun src/index.ts gems inspect 'library/Golden Gems/My Gem.gem'
43
38
  bun src/index.ts gems validate 'library/Golden Gems/My Gem.gem'
44
39
  bun src/index.ts gems build 'library/Golden Gems/My Gem.gem'
45
- bun src/index.ts gems versions upload 'library/Golden Gems/My Gem.gem' --message "ready"
46
- bun src/index.ts gems versions deploy <version-id> 'library/Golden Gems/My Gem.gem'
47
- bun src/index.ts gems checks <version-id> 'library/Golden Gems/My Gem.gem'
48
- bun src/index.ts gems checks run security 'library/Golden Gems/My Gem.gem' --deployment-id <deployment-id> --blocking --deep
49
- bun src/index.ts gems checks run browser 'library/Golden Gems/My Gem.gem' --deployment-id <deployment-id> --blocking
40
+ bun src/index.ts gems edits list 'library/Golden Gems/My Gem.gem'
41
+ bun src/index.ts gems edits show 'library/Golden Gems/My Gem.gem' <edit-id>
42
+ bun src/index.ts gems versions save 'library/Golden Gems/My Gem.gem' --name "Client review" --message "Ready for review"
43
+ bun src/index.ts gems versions list 'library/Golden Gems/My Gem.gem'
44
+ bun src/index.ts gems versions show 'library/Golden Gems/My Gem.gem' 14
45
+ bun src/index.ts gems versions diff 'library/Golden Gems/My Gem.gem' 13 14
46
+ bun src/index.ts gems versions restore 'library/Golden Gems/My Gem.gem' 12
47
+ bun src/index.ts gems releases create 'library/Golden Gems/My Gem.gem' 14
48
+ bun src/index.ts gems releases list 'library/Golden Gems/My Gem.gem'
49
+ bun src/index.ts gems links create 'library/Golden Gems/My Gem.gem' --name Client --version 14
50
+ bun src/index.ts gems links set-version 'library/Golden Gems/My Gem.gem' <link-id> 14
51
+ bun src/index.ts gems runs list 'library/Golden Gems/My Gem.gem'
52
+ bun src/index.ts gems runs show 'library/Golden Gems/My Gem.gem' <run-id>
53
+ bun src/index.ts gems logs 'library/Golden Gems/My Gem.gem' --release <release-id>
54
+ bun src/index.ts gems logs 'library/Golden Gems/My Gem.gem' --run <run-id>
50
55
  bun src/index.ts gems read 'library/Golden Gems/My Gem.gem' main.html
51
56
  bun src/index.ts gems write 'library/Golden Gems/My Gem.gem' main.html --file ./main.html
52
57
 
@@ -63,8 +68,10 @@ bun src/index.ts library mv 'library/Notes/Draft.md' 'library/Notes/Final.md'
63
68
  bun src/index.ts library rm 'library/Notes/Old.md'
64
69
  bun src/index.ts library restore 'library/Notes/Old.md'
65
70
  bun src/index.ts datasets query revenue_rows --limit 50 --response-format concise --json
66
- bun src/index.ts datasets get --params-json '{"dataset_id":"revenue_rows"}'
67
- bun src/index.ts datasets rows-upsert --params-json '{"dataset_id":"revenue_rows","rows":[{"name":"Acme"}]}'
71
+ bun src/index.ts library ls --params-json '{"path":"library","resource_type":"dataset"}'
72
+ # Copy the exact resourceSlug from Library discovery; never infer it from name.
73
+ bun src/index.ts datasets get --params-json '{"dataset_id":"revenue-rows"}'
74
+ bun src/index.ts datasets rows-upsert --params-json '{"dataset_id":"revenue-rows","rows":[{"name":"Acme"}]}'
68
75
  bun src/index.ts datasets manage-create --params-json '{"title":"Revenue Rows","data_schema":{"properties":[]}}'
69
76
 
70
77
  # Automation helpers over the platform tool surface.
@@ -100,13 +107,16 @@ bun src/index.ts complete zsh
100
107
  bun src/index.ts complete fish
101
108
  ```
102
109
 
103
- Gem version commands create immutable, build-backed versions through
104
- `gem_control_plane` `op=version_upload`, then deploy those version ids through
105
- `op=version_deploy`. Provider-internal flags such as `--runtime-provider` are
106
- not accepted: runtime routing is compiled server-side from the Gem contract.
107
- Non-100 rollout percentages are accepted only with `--skip-promote` to stage
108
- rollout intent; live promote/rollback remains fail-closed until weighted link
109
- routing is enabled.
110
+ Generated MCP configs use non-interactive `npx -y` and pin
111
+ `uru-mcp@3.7.2`. Pass `--package <package@version>` only for an intentional,
112
+ explicit bridge override.
113
+
114
+ Gem Version commands save and inspect frozen checkpoints that group coherent
115
+ Edits. The Version name and message are optional. Hosted Gems materialize one
116
+ Version with `releases create`; embedded Gems do not need Releases. Neither
117
+ action changes a public URL. Only `links set-version` changes the one named
118
+ Link. Provider-internal flags are not accepted: runtime routing is compiled
119
+ server-side.
110
120
 
111
121
  The scaffold defaults to the production API (`https://api.uruintelligence.com`).
112
122
  Use `--api-url`, `URU_API_BASE`, or `URU_API_URL` to point it at staging or a local backend:
@@ -119,16 +129,23 @@ URU_API_BASE=http://127.0.0.1:8000 bun src/index.ts whoami --json
119
129
  ## Auth and local state
120
130
 
121
131
  The default login path is browser OAuth with PKCE and OS-keychain storage.
122
- Headless environments can use device login or explicit token/API-key paths:
132
+ Browser and device login keep access/session tokens short-lived and store a
133
+ rotating OAuth refresh credential so the CLI can renew them automatically.
134
+ The refresh credential has a 30-day lifetime and receives a new 30-day lifetime
135
+ when it is successfully rotated. Headless environments can use device login or
136
+ explicit token/API-key paths:
123
137
 
124
- - `uru login` opens browser OAuth and stores the exchanged CLI session token in the OS keychain
138
+ - `uru login` opens browser OAuth and stores a versioned, renewable credential bundle in the OS keychain
125
139
  - `uru login --device` prints a device-code URL for SSH/headless environments
126
140
  - `uru login --token ...` stores the token in OS credential storage when available: macOS Keychain, Linux `secret-tool`/libsecret, or Windows Credential Manager via PowerShell
127
141
  - `uru login --token ... --insecure-storage` is the explicit plaintext fallback
128
142
  - Linux token storage requires `secret-tool` (often installed as `libsecret-tools`); Windows token storage requires PowerShell access to Credential Manager. If the OS store is unavailable, login fails closed with an actionable `--insecure-storage` fallback message.
129
- - interactive commands with no stored token start browser login and then retry the command without printing login success text to stdout
143
+ - browser/device credentials renew within five minutes of session expiry and when switching workspaces
144
+ - interactive commands with missing or expired stored auth start browser login and then retry the command without printing login success text to stdout
130
145
  - `--no-input` disables implicit login and exits `4` when authentication is missing
146
+ - `uru logout` invalidates the current CLI session, revokes the renewable OAuth credential, and clears local auth state
131
147
  - precedence: `--token` / `--token-file` / `--token-stdin` > `URU_TOKEN` > OS keychain > `--insecure-storage` local config
148
+ - manually supplied tokens and CI tokens are used as-is and do not gain OAuth renewal
132
149
  - local config: `URU_CONFIG_HOME`, then XDG config home, then `~/.config/uru`
133
150
  - config file permissions: `0600`
134
151
  - linked project state: `.uru/project.json` with `{workspaceId, gemId, libraryPath}`
@@ -173,6 +190,20 @@ URU_CLI_MCP_STAGING_SMOKE_TARGET=staging \
173
190
  bun --filter=@uru-intelligence/cli run smoke:staging -- --json
174
191
  ```
175
192
 
193
+ Publish the scoped CLI only through the **Publish Uru CLI to npm** workflow on
194
+ `main`. It first verifies that the exact pinned `uru-mcp` release exists, runs
195
+ release validation, publishes through npm trusted publishing from a
196
+ GitHub-hosted runner in the protected `production` environment, and then
197
+ requires a separate live-registry job to verify the exact published version.
198
+ The registry smoke intentionally runs `npm exec` from a clean OS temporary
199
+ directory so the monorepo workspace cannot shadow the published package. The
200
+ source repository is private, so npm OIDC authenticates the publish without a
201
+ long-lived token but cannot emit a public provenance attestation.
202
+
203
+ ```bash
204
+ bun --filter=@uru-intelligence/cli run smoke:registry
205
+ ```
206
+
176
207
  The npm package remains the canonical install path. Release builds can also
177
208
  produce standalone Bun-compiled binaries for the planned macOS/Linux/Windows
178
209
  matrix: