@odla-ai/cli 0.27.5 → 0.27.7

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
@@ -589,7 +589,7 @@ For parity with a static Google Appointment Schedule embed/link, set the public
589
589
  `bookingPageUrl` per environment. Provision applies it through the owner-only
590
590
  calendar settings route; it is public configuration, not a credential.
591
591
 
592
- `calendar status` returns the safe connection/sync projection; add `--json` for
592
+ `calendar status` returns the safe connection/bookability projection; add `--json` for
593
593
  agent automation. Once connected, `calendar calendars` lists ids visible to the
594
594
  Google identity so the checked-in selection can be refined. `calendar connect`
595
595
  applies the checked-in booking-page setting and starts consent when the
@@ -609,14 +609,15 @@ authorization code, client secret, access token, or refresh token.
609
609
 
610
610
  The SDK uses the existing server-side db values (`ODLA_ENDPOINT`,
611
611
  `ODLA_TENANT`, `ODLA_API_KEY`), so calendar adds no Worker secret. Never expose
612
- `ODLA_API_KEY` to a browser. Trusted Worker code can initialize
613
- `@odla-ai/calendar`; browser code reads `$bookings` through `@odla-ai/db/client`
614
- under explicit rules or imports pure helpers from `@odla-ai/calendar/client`.
615
-
616
- These commands operate the current read/embed reconciliation slice. The CLI has
617
- no native slot-picker or create/reschedule/cancel command, and exposes no
618
- rolling-window/age-out, quota-backoff, retention/purge, or provider-derived
619
- mutation-id control. Public health remains aggregate rather than per calendar.
612
+ `ODLA_API_KEY` to a browser. Trusted Worker code initializes
613
+ `@odla-ai/calendar` for live FreeBusy/upcoming reads and idempotent
614
+ create/reschedule/cancel operations; browser code imports only pure helpers and
615
+ public configuration from `@odla-ai/calendar/client`.
616
+
617
+ These CLI commands manage the provider connection and its non-secret calendar
618
+ selection. They intentionally do not create or mutate events: application
619
+ backends do that through `@odla-ai/calendar`. Google is the source of truth and
620
+ odla stores no event or attendee mirror.
620
621
 
621
622
  The bundled build/migration skills add a passive pre-ship gate with
622
623
  `@odla-ai/security`: install it with a normal development range, commit the
package/dist/bin.cjs CHANGED
@@ -518,7 +518,7 @@ var SCOPE_PURPOSE = {
518
518
  "platform:status:read": "read the platform fleet health and deployment snapshot",
519
519
  "app:config:read": "compare checked-in intent with an exact-id app Registry configuration",
520
520
  "app:config:write": "apply or inspect one revision-bound configuration operation for an app you own",
521
- "platform:runbook:write": "add or edit odla's operational runbooks",
521
+ "platform:runbook:write": "read and edit all of odla's operational runbooks, including admin-visible content",
522
522
  "platform:ai:policy:write": "change System AI model routing",
523
523
  "platform:ai:policy:read": "read System AI model routing",
524
524
  "platform:ai:credential:write": "replace a stored AI provider key",
@@ -12067,8 +12067,13 @@ async function whoamiCommand(parsed, deps = {}) {
12067
12067
  out.log(`admin: ${identity.admin ? "yes" : "no"}`);
12068
12068
  if (identity.scopes.length) out.log(`scopes: ${identity.scopes.join(", ")}`);
12069
12069
  if (!identity.admin) {
12070
- out.log("\nYou can read platform runbooks but not edit them. A handshake-minted");
12071
- out.log("device token never carries admin \u2014 sign in to Studio as an admin to edit.");
12070
+ if (identity.scopes.includes("platform:runbook:write")) {
12071
+ out.log("\nThis exact scope can read and edit all platform runbook content.");
12072
+ out.log("The device token is not ambient admin and cannot change visibility.");
12073
+ } else {
12074
+ out.log("\nYou can read operator-visible platform runbooks but not edit them.");
12075
+ out.log("Use a platform-admin-approved runbook write request to edit.");
12076
+ }
12072
12077
  }
12073
12078
  }
12074
12079