@odla-ai/cli 0.27.7 → 0.27.8
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
|
@@ -466,7 +466,10 @@ shown-once credential.
|
|
|
466
466
|
Studio shows the immutable project-derived agent handle, project, and
|
|
467
467
|
capability request without mutation controls. The owner approves that exact
|
|
468
468
|
request or declines it with an explanation which the CLI returns to the
|
|
469
|
-
calling agent; a different identity or access set requires a new request.
|
|
469
|
+
calling agent; a different identity or access set requires a new request. If
|
|
470
|
+
the exact project id does not exist yet, approval reserves that id for this
|
|
471
|
+
credential instead of failing: the credential may create only that app once,
|
|
472
|
+
and Registry binds its reviewed grant to the new app incarnation.
|
|
470
473
|
Every real CLI handshake prints exactly one canonical `/studio?code=…` URL
|
|
471
474
|
and attempts to open it — including from CI, SSH, display-less, scripted,
|
|
472
475
|
and agent-driven shells. Only `--no-open` suppresses the attempt. Browser
|
|
@@ -477,7 +480,8 @@ shown-once credential.
|
|
|
477
480
|
Outside an interactive terminal the approval wait is capped (90 seconds by
|
|
478
481
|
default; `--wait <seconds>` overrides), and a still-pending handshake exits
|
|
479
482
|
with code 75 — approve at the URL, then re-run to collect the token.
|
|
480
|
-
2. Creates the platform app if needed.
|
|
483
|
+
2. Creates the platform app if needed. For a new id, this consumes the exact-id
|
|
484
|
+
reservation approved in step 1; it is not ambient project-creation authority.
|
|
481
485
|
3. Enables configured services in every configured environment. Calendar
|
|
482
486
|
config is normalized per env and fixed to Google read-only access.
|
|
483
487
|
4. Mints or reuses each env's configured service credentials: an odla-db app
|
|
@@ -554,7 +558,13 @@ or approved-but-uncollected request can be active for that user.
|
|
|
554
558
|
For an ordinary request, Studio also requires at least one exact project
|
|
555
559
|
selection. The credential receives project metadata, PM, discussion, and
|
|
556
560
|
brand-candidate editing grants only for those projects, never ambient owner
|
|
557
|
-
access, app administration, or brand approval.
|
|
561
|
+
access, app administration, or brand approval. A selected id that does not yet
|
|
562
|
+
exist is a one-time bootstrap reservation: the credential may create that exact
|
|
563
|
+
app, after which the grant is bound to its new lifetime. A 404 from the approve
|
|
564
|
+
action is a routing regression; missing, archived, foreign, changed, or raced
|
|
565
|
+
requests must produce a specific conflict or denial. The reservation authorizes
|
|
566
|
+
only that bootstrap creation; later service, configuration, and administrative
|
|
567
|
+
mutations still require their normal capabilities and human checkpoints.
|
|
558
568
|
|
|
559
569
|
Developer grants are tracked by id, owner, label, scopes, creation/expiry,
|
|
560
570
|
last use, and revocation state. The plaintext token is delivered once to the
|
package/REQUIREMENTS.md
CHANGED
|
@@ -46,6 +46,11 @@ Agnacl, but none should mention or special-case Agnacl.
|
|
|
46
46
|
controls. Approval accepts the request digest exactly; denial requires a
|
|
47
47
|
bounded, non-secret explanation returned to the polling agent. Any changed
|
|
48
48
|
scope, project, or capability requires a fresh request.
|
|
49
|
+
- An approved exact project id may be absent at review time. Collection must
|
|
50
|
+
reserve that id for the approved credential, which may create only that app
|
|
51
|
+
once; creation binds the reviewed grant to the new app incarnation. Existing
|
|
52
|
+
foreign or archived ids remain unapprovable. Approval precondition failures
|
|
53
|
+
must return an actionable conflict—never a route-like 404.
|
|
49
54
|
- Only one claimed pending or approved-but-uncollected request may be active per
|
|
50
55
|
user. Unclaimed issued codes must not occupy that slot.
|
|
51
56
|
- Every real CLI handshake must attempt to open that canonical approval URL,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odla-ai/cli",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.8",
|
|
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",
|
package/skills/odla/SKILL.md
CHANGED
|
@@ -115,6 +115,7 @@ guessing which platform/credential steps need manual work. Then:
|
|
|
115
115
|
`--wait <seconds>`); exit code 75 means still pending: the handshake is
|
|
116
116
|
persisted, so once the human approves, re-run the same command and it
|
|
117
117
|
resumes the same code and collects the token. It creates the app,
|
|
118
|
+
consuming a one-time exact-id reservation when the approved app is new,
|
|
118
119
|
enables services, issues or reuses configured credentials (db key + o11y
|
|
119
120
|
ingest token when enabled), composes declared integration schema/rules and
|
|
120
121
|
guarded seeds, writes `.dev.vars`, and
|
|
@@ -112,8 +112,14 @@ permanent authority.
|
|
|
112
112
|
- Wrong handle requested: decline it and correct the project/SDK request before
|
|
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
|
-
- Missing project
|
|
116
|
-
|
|
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.
|
|
120
|
+
- Approval returns 404: treat it as a Registry routing regression, not a missing
|
|
121
|
+
project outcome. Preserve the code and pending state, report the incident,
|
|
122
|
+
and retry the same request after Registry is healthy.
|
|
117
123
|
- Project ownership/lifecycle changed after approval: collection expires the
|
|
118
124
|
unusable replacement while preserving the current credential and grant set.
|
|
119
125
|
Restore the intended project state, then start and review a fresh handshake.
|
|
@@ -55,7 +55,8 @@ The email is an account identifier, never a password or session credential.
|
|
|
55
55
|
Prints a short device code and a link. ⏸ That same account opens the link, signs
|
|
56
56
|
in, explicitly reviews the exact code, and approves it — loading the URL alone
|
|
57
57
|
does not claim access, and no secret passes through the chat. Provision then:
|
|
58
|
-
creates the app
|
|
58
|
+
creates the app (consuming the approved one-time exact-id reservation when it
|
|
59
|
+
is new), enables its services, issues or reuses the db key (and the
|
|
59
60
|
o11y ingest token when o11y is enabled), pushes the composed app + integration
|
|
60
61
|
schema/rules, creates missing guarded seeds, writes
|
|
61
62
|
`.dev.vars`, and transfers configured Worker secrets through Wrangler stdin.
|
|
@@ -64,6 +65,14 @@ Local credential files are `0600` and gitignored. Verify with
|
|
|
64
65
|
anything unset. `--push-secrets` preflights the Wrangler config and login before
|
|
65
66
|
issuing or rotating a shown-once credential.
|
|
66
67
|
|
|
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.
|
|
75
|
+
|
|
67
76
|
Calendar adds a second ⏸ checkpoint after the odla device approval: provision
|
|
68
77
|
prints/opens a state-bound Google URL issued by the platform and waits while
|
|
69
78
|
the human grants the booking scopes in a browser. The CLI never receives the
|