@odla-ai/cli 0.27.8 → 0.27.10

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.js CHANGED
@@ -57,7 +57,7 @@ import {
57
57
  startHostedSecurityJob,
58
58
  surfacePaths,
59
59
  validateInvocation
60
- } from "./chunk-MZSU4YQL.js";
60
+ } from "./chunk-OGZELVS5.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.8",
3
+ "version": "0.27.10",
4
4
  "description": "Agent-operable CLI for odla provisioning, calendar consent and connection lifecycle, System AI administration, Worker secrets, security jobs, and smoke checks.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://odla.ai/docs/packages/cli",
@@ -315,5 +315,5 @@ code, paste a publishable key, run a command) — and wait for a nod.
315
315
  across credential expiry, linked worktrees, and non-odla-ai projects without
316
316
  copying a token or widening project authority.
317
317
  - `references/co-owners.md` — sharing one app's db and tooling across a team:
318
- `app owners add/list/remove`, and how each co-owner self-provisions their own
318
+ signed-in Studio ownership changes, and how each co-owner self-provisions their own
319
319
  credentials (dev and the shared prod database) without any secret handoff.
@@ -113,10 +113,11 @@ permanent authority.
113
113
  starting a fresh handshake. If already approved, revoke the new credential in
114
114
  Studio; do not rename or merge principals by editing local metadata.
115
115
  - Missing project on first provision: approve the exact id. Collection records
116
- a one-time reservation; the credential creates only that app and Registry
117
- binds the grant to its new incarnation. Never pre-create a substitute or
118
- widen to all projects. The reservation does not bypass later service,
119
- configuration, or administrative capability checks.
116
+ a one-time reservation plus the explicit `app.manage` provision capability;
117
+ the credential creates only that app, Registry binds the grant to its new
118
+ incarnation, and provision may continue through non-lifecycle configuration.
119
+ Never pre-create a substitute or widen to all projects. Ownership and
120
+ lifecycle operations still require the direct human session.
120
121
  - Approval returns 404: treat it as a Registry routing regression, not a missing
121
122
  project outcome. Preserve the code and pending state, report the incident,
122
123
  and retry the same request after Registry is healthy.
@@ -66,12 +66,13 @@ anything unset. `--push-secrets` preflights the Wrangler config and login before
66
66
  issuing or rotating a shown-once credential.
67
67
 
68
68
  If Studio shows an unknown exact app id, that is a valid first provision: the
69
- human approves the id, the collected credential creates only that app, and the
70
- grant becomes bound to its new incarnation. Do not pre-create a substitute app
71
- or broaden the request. A 404 from **Approve** is a platform regression; capture
72
- the code and retry only after Registry is healthy. This reservation covers only
73
- the exact app creation; service, configuration, and administrative mutations
74
- retain their ordinary capability and human-checkpoint requirements.
69
+ human approves the id and explicit `app.manage` provision capability, the
70
+ collected credential creates only that app, and the grant becomes bound to its
71
+ new incarnation. It may then finish non-lifecycle service configuration and
72
+ tenant administration. Do not pre-create a substitute app or broaden the
73
+ request. A 404 from **Approve** is a platform regression; capture the code and
74
+ retry only after Registry is healthy. Ownership, rename/category, and lifecycle
75
+ mutations remain direct-human operations.
75
76
 
76
77
  Calendar adds a second ⏸ checkpoint after the odla device approval: provision
77
78
  prints/opens a state-bound Google URL issued by the platform and waits while
@@ -13,16 +13,11 @@ records who co-owns an app; the db honors any co-owner when they provision.
13
13
 
14
14
  ## Onboarding a co-owner
15
15
 
16
- 1. **The primary owner adds them** (they must already be a signed-up odla
17
- member — an admin invites them first if not):
18
-
19
- ```cmd
20
- npx @odla-ai/cli app owners add teammate@example.com
21
- npx @odla-ai/cli app owners list
22
- ```
23
-
24
- (`npx @odla-ai/cli app owners remove teammate@example.com` revokes it. The
25
- primary owner can't be removed. Studio's app **Settings** does the same.)
16
+ 1. **The primary owner adds them in signed-in Studio app Settings** (they must
17
+ already be a signed-up odla member — an admin invites them first if not).
18
+ Ownership mutation requires a direct human session. Do not tell an agent to
19
+ run `app owners add`: a device-handshake token intentionally receives
20
+ `human_session_required` on that route. The primary owner cannot be removed.
26
21
 
27
22
  2. **The co-owner provisions as themselves.** They clone the repo (which carries
28
23
  `odla.config.mjs` but not the gitignored credentials) and run provision with
@@ -47,12 +42,15 @@ own key. Treat first-prod provision/deploy as the usual human checkpoint
47
42
  (`provision --dry-run` review, then `provision --yes --push-secrets`), and never
48
43
  rotate another owner's credentials on their behalf.
49
44
 
50
- ## If provision says "you are not an owner"
45
+ ## If provision says the credential lacks `app.manage`
51
46
 
52
47
  provision checks tenant admin access up front and aborts **before** anything is
53
48
  minted or written — no credential lands on disk, in the vault, or in a Worker.
54
- It means the registry doesn't list you as an owner yet: ask an existing owner
55
- to run `npx @odla-ai/cli app owners add <your-email>`, then re-run provision.
49
+ First rerun provision and approve its fresh exact-project `app.manage` request;
50
+ the CLI does not reuse a baseline cached or pending handshake for this. If the
51
+ human account itself is not an owner, ask an existing owner to add it in
52
+ signed-in Studio app Settings, then rerun provision. An agent token cannot fix
53
+ ownership and the CLI must not suggest that it can.
56
54
 
57
55
  ## If a co-owner loses their local key
58
56