@odla-ai/cli 0.27.1 → 0.27.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/dist/index.d.cts CHANGED
@@ -569,8 +569,8 @@ interface ProvisionOptions {
569
569
  token?: string;
570
570
  /** Existing odla account email used only when a fresh device handshake is required. */
571
571
  email?: string;
572
- /** true forces browser launch, false disables it, undefined auto-opens whenever
573
- * this machine can show a browser (skipped in CI, over SSH, or with no display). */
572
+ /** Browser opening is attempted by default in every real CLI environment.
573
+ * true records an explicit request; false is the only production suppression. */
574
574
  open?: boolean;
575
575
  /** Cap the handshake-approval wait, in seconds. When it elapses the command
576
576
  * exits with the pending handshake persisted; rerunning resumes it. Defaults
@@ -897,10 +897,10 @@ declare function initProject(options: InitOptions): void;
897
897
  *
898
898
  * The developer token comes from (in order) `options.token`, `$ODLA_DEV_TOKEN`,
899
899
  * the cached `.odla` token, or a fresh email-bound device handshake — which
900
- * prints a user code for the same signed-in account to review and auto-opens
901
- * the browser whenever this machine can show one — including scripted and
902
- * agent-driven runs; only CI, SSH, and display-less hosts skip it
903
- * (`open: true`/`false` forces/suppresses it). Network error bodies pass through
900
+ * prints one canonical Studio URL and attempts to open it from every real CLI
901
+ * environment, including CI, SSH, display-less, and agent-driven shells. Only
902
+ * `open: false` suppresses the attempt; opener failures remain explicit.
903
+ * Network error bodies pass through
904
904
  * `redactSecrets` before display.
905
905
  *
906
906
  * @param options.dryRun Print the resolved plan and return before any network call/write.
package/dist/index.d.ts CHANGED
@@ -569,8 +569,8 @@ interface ProvisionOptions {
569
569
  token?: string;
570
570
  /** Existing odla account email used only when a fresh device handshake is required. */
571
571
  email?: string;
572
- /** true forces browser launch, false disables it, undefined auto-opens whenever
573
- * this machine can show a browser (skipped in CI, over SSH, or with no display). */
572
+ /** Browser opening is attempted by default in every real CLI environment.
573
+ * true records an explicit request; false is the only production suppression. */
574
574
  open?: boolean;
575
575
  /** Cap the handshake-approval wait, in seconds. When it elapses the command
576
576
  * exits with the pending handshake persisted; rerunning resumes it. Defaults
@@ -897,10 +897,10 @@ declare function initProject(options: InitOptions): void;
897
897
  *
898
898
  * The developer token comes from (in order) `options.token`, `$ODLA_DEV_TOKEN`,
899
899
  * the cached `.odla` token, or a fresh email-bound device handshake — which
900
- * prints a user code for the same signed-in account to review and auto-opens
901
- * the browser whenever this machine can show one — including scripted and
902
- * agent-driven runs; only CI, SSH, and display-less hosts skip it
903
- * (`open: true`/`false` forces/suppresses it). Network error bodies pass through
900
+ * prints one canonical Studio URL and attempts to open it from every real CLI
901
+ * environment, including CI, SSH, display-less, and agent-driven shells. Only
902
+ * `open: false` suppresses the attempt; opener failures remain explicit.
903
+ * Network error bodies pass through
904
904
  * `redactSecrets` before display.
905
905
  *
906
906
  * @param options.dryRun Print the resolved plan and return before any network call/write.
package/dist/index.js CHANGED
@@ -57,7 +57,7 @@ import {
57
57
  startHostedSecurityJob,
58
58
  surfacePaths,
59
59
  validateInvocation
60
- } from "./chunk-4JWDJN3P.js";
60
+ } from "./chunk-JWEBGIBR.js";
61
61
  export {
62
62
  AGENT_HARNESSES,
63
63
  CAPABILITIES,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odla-ai/cli",
3
- "version": "0.27.1",
3
+ "version": "0.27.2",
4
4
  "description": "Agent-operable CLI for odla provisioning, calendar consent and sync lifecycle, System AI administration, Worker secrets, security jobs, and smoke checks.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://odla.ai/docs/packages/cli",
@@ -106,9 +106,11 @@ guessing which platform/credential steps need manual work. Then:
106
106
  `npx @odla-ai/cli provision --email <existing-odla-account>
107
107
  --write-dev-vars --push-secrets`. A device code prints; that same account
108
108
  signs in, reviews the exact code, and approves it at https://odla.ai/studio.
109
- Opening the link alone is inert. Relay the printed approval URL to the
110
- human verbatim the automatic browser launch is best-effort and may show
111
- no tab. Outside an interactive terminal the wait is capped (90s default,
109
+ Opening the link alone is inert. The CLI prints exactly one `/studio?code=`
110
+ URL and attempts to open it in every real environment. **If you have browser
111
+ control, open that exact URL now.** If you do not, give it to the human
112
+ verbatim; never wait silently or start a substitute handshake. Outside an
113
+ interactive terminal the wait is capped (90s default,
112
114
  `--wait <seconds>`); exit code 75 means still pending: the handshake is
113
115
  persisted, so once the human approves, re-run the same command and it
114
116
  resumes the same code and collects the token. It creates the app,
@@ -242,11 +244,11 @@ Found a wrong step? Fix an app runbook directly. For a platform runbook,
242
244
  `runbook edit` requests an admin-approved capability — a plain handshake token is
243
245
  never admin, and `npx @odla-ai/cli whoami` tells you what you hold.
244
246
 
245
- ⏸ That request prints an approval block with a URL on its own line. **Relay that
246
- URL to the human verbatim, immediately, before you wait on anything.** You cannot
247
- approve it yourself — the grant is issued to you, not by you — and the command
248
- blocks until a signed-in admin approves it. The browser launch is best-effort and
249
- often shows no tab, so the printed URL is the only thing the human can rely on.
247
+ ⏸ That request prints the same canonical approval block. **Use browser control
248
+ to open its URL immediately; if unavailable, give it to the human verbatim.**
249
+ You cannot approve it yourself — the grant is issued to you, not by you — and
250
+ the command blocks until a signed-in admin approves it. Never wait silently or
251
+ start a substitute handshake because the automatic opener produced no tab.
250
252
  If approval is not available, comment on the runbook instead so an admin can fix
251
253
  it later.
252
254
 
@@ -7,7 +7,9 @@ schema + deny-all rules, the db key in the dev worker, and first
7
7
  Human obligation: provide the existing odla account email (not a password or
8
8
  session credential), sign in at https://odla.ai/studio, explicitly review the
9
9
  exact handshake code, and approve it. The provision run prints the code and
10
- opens the review page in interactive terminals; loading it alone is inert.
10
+ attempts to open the one canonical review URL in every real CLI environment.
11
+ Agents with browser control open that exact URL immediately; loading it alone
12
+ is inert until the signed-in human approves.
11
13
 
12
14
  ## Steps
13
15
 
@@ -40,9 +40,10 @@ password or session token.
40
40
  Cause: nobody approved within the wait cap (90s outside an interactive
41
41
  terminal; `--wait <seconds>` overrides). This is normal in agent shells and
42
42
  loses nothing — the handshake is persisted in `.odla/handshake.local.json`.
43
- Fix: relay the printed approval URL to the human **verbatim** (browser
44
- launch is best-effort a sandboxed shell can report success with no tab
45
- appearing), wait for them to approve, then re-run the same command; it
43
+ Fix: use browser control to open the one printed `/studio?code=` URL now. If
44
+ browser control is unavailable, give that URL to the human **verbatim**. The
45
+ CLI attempts its OS opener in every real environment, but that request can
46
+ still produce no visible tab. Wait for approval, then re-run the same command; it
46
47
  resumes the same code and collects the token. Do not loop unattended
47
48
  retries; each handshake lives ~10 minutes.
48
49