@odla-ai/cli 0.25.22 → 0.26.1
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 +61 -11
- package/dist/bin.cjs +1061 -341
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-2AFAXLKE.js → chunk-ZAZBUURZ.js} +1023 -294
- package/dist/chunk-ZAZBUURZ.js.map +1 -0
- package/dist/index.cjs +1069 -341
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +52 -23
- package/dist/index.d.ts +52 -23
- package/dist/index.js +9 -1
- package/package.json +2 -2
- package/skills/odla/references/sdks.md +5 -3
- package/skills/odla-migrate/references/phase-2b-calendar.md +13 -8
- package/dist/chunk-2AFAXLKE.js.map +0 -1
package/README.md
CHANGED
|
@@ -156,15 +156,36 @@ therefore compares that verified expectation with the Worker answering now and
|
|
|
156
156
|
reports `matched`, `drifted`, or `unknown`; an empty or unavailable receipt
|
|
157
157
|
ledger degrades instead of silently treating observed health as intended state.
|
|
158
158
|
|
|
159
|
+
Platform maintainers can rotate the built-in Discussion responder without
|
|
160
|
+
minting an unrestricted app key or exposing the replacement in argv/output:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npx @odla-ai/cli platform chat-credentials rotate \
|
|
164
|
+
--wrangler-config packages/chat-agent/wrangler.jsonc \
|
|
165
|
+
--expected-version <deployed-chat-version-id> \
|
|
166
|
+
--email <odla-admin-account> \
|
|
167
|
+
--yes --json
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The command requests only `platform:chat:credential:write`, mints an
|
|
171
|
+
`agent_odla` key restricted to the Discussion namespaces and write envelope,
|
|
172
|
+
pipes the nested `ODLA_BOT_TOKENS` map to Wrangler over stdin, and succeeds only
|
|
173
|
+
after the service-binding health bridge advances from the pre-rotation Worker
|
|
174
|
+
version to a healthy secret-change deployment. `--expected-version` fences the
|
|
175
|
+
pre-rotation version before any credential is minted. Superseded keys are
|
|
176
|
+
revoked separately after that health proof.
|
|
177
|
+
|
|
159
178
|
For repository-managed settings, compare checked-in intent with the live
|
|
160
179
|
owner-visible Registry projection before provisioning:
|
|
161
180
|
|
|
162
181
|
```bash
|
|
163
182
|
npx odla-ai config diff --json
|
|
164
|
-
npx odla-ai config plan --json
|
|
183
|
+
npx odla-ai config plan --json > .odla/config-plan.json
|
|
184
|
+
npx odla-ai config apply --plan .odla/config-plan.json --json
|
|
185
|
+
npx odla-ai operations wait <operation-id> --json
|
|
165
186
|
```
|
|
166
187
|
|
|
167
|
-
|
|
188
|
+
`diff` and `plan` are read-only and request only a short-lived,
|
|
168
189
|
owner-approvable `app:config:read` capability. It opens only exact-id
|
|
169
190
|
`GET /registry/apps/<appId>` reads for apps the approver owns; app listing,
|
|
170
191
|
writes, PM, Discussions, directory access, data-plane delegation, and every
|
|
@@ -174,14 +195,33 @@ status, field provenance, and a bounded coverage declaration. Runtime auth or
|
|
|
174
195
|
links omitted from project config stay visible as `unmanaged` rather than
|
|
175
196
|
being silently overwritten.
|
|
176
197
|
|
|
177
|
-
`plan` freezes those revisions
|
|
198
|
+
`plan` v2 freezes those content revisions, the monotonic Registry
|
|
199
|
+
`registry:<number>` revision, and ordered actions into a stable digest.
|
|
178
200
|
Enable/configure actions are dependency-first; proposed disablements are
|
|
179
|
-
dependent-first, high-risk, approval-required, and Studio-only.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
201
|
+
dependent-first, high-risk, approval-required, and Studio-only.
|
|
202
|
+
|
|
203
|
+
`config apply` accepts only that saved JSON plan. Before requesting authority it
|
|
204
|
+
recomputes the digest, verifies the selected app/platform, confirms checked-in
|
|
205
|
+
intent has not changed, and rejects every production, destructive,
|
|
206
|
+
approval-marked, high-risk, Studio, auth, creation, or disable action. The
|
|
207
|
+
short-lived `app:config:write` grant reaches only this app's operation
|
|
208
|
+
reserve/resume/read routes; it cannot enumerate apps or call direct mutation
|
|
209
|
+
routes. A deterministic default idempotency key makes retrying the same plan
|
|
210
|
+
resume the same durable journal entry, while the Registry CAS revision rejects
|
|
211
|
+
stale state.
|
|
212
|
+
|
|
213
|
+
Apply prints the operation receipt, including ordered step attempts and its
|
|
214
|
+
canonical environment-settings recovery URL. Studio preserves the exact
|
|
215
|
+
operation id in that URL and renders the matching
|
|
216
|
+
`operations get <id> --json` recovery command. Plans that require Studio now
|
|
217
|
+
link to the explicit app/environment settings scope instead of an ambiguous
|
|
218
|
+
app-level Settings page. `operations get` reads one exact id without replaying it;
|
|
219
|
+
`operations wait` polls that id for 60 seconds by default (`--timeout` and
|
|
220
|
+
`--interval` are explicit seconds). A still-running bounded wait exits 75 after
|
|
221
|
+
printing its last receipt. Every terminal receipt is independently
|
|
222
|
+
digest-verified by the CLI before success. Schema, rules, integration seeds,
|
|
223
|
+
credentials, vault or Worker secrets, OAuth connection state, and opaque
|
|
224
|
+
controller-assigned service fields remain outside this boundary.
|
|
185
225
|
|
|
186
226
|
**Runbooks are procedure; JSDoc is API.** What a function takes, returns, and
|
|
187
227
|
guarantees is documented on the export itself, ships in the installed
|
|
@@ -210,7 +250,10 @@ npx @odla-ai/cli runbook edit db --note "retract replaced the null write"
|
|
|
210
250
|
|
|
211
251
|
Platform runbook edits need admin or the `platform:runbook:write` capability,
|
|
212
252
|
which the CLI requests for you; a plain handshake token is never admin by
|
|
213
|
-
design
|
|
253
|
+
design. `odla-ai whoami` reports the actual credential-bound principal by
|
|
254
|
+
friendly name, handle, and kind; an agent's manager; the credential kind; and
|
|
255
|
+
the accountable human owner separately. Manager metadata explains organization
|
|
256
|
+
but never grants authority.
|
|
214
257
|
|
|
215
258
|
**Is the corpus itself still true?**
|
|
216
259
|
|
|
@@ -284,7 +327,10 @@ npx odla-ai setup
|
|
|
284
327
|
npx odla-ai init --app-id my-app --name "My App"
|
|
285
328
|
npx odla-ai doctor
|
|
286
329
|
npx odla-ai config diff --json
|
|
287
|
-
npx odla-ai config plan --json
|
|
330
|
+
npx odla-ai config plan --json > .odla/config-plan.json
|
|
331
|
+
npx odla-ai config apply --plan .odla/config-plan.json --json
|
|
332
|
+
npx odla-ai operations get <operation-id> --json
|
|
333
|
+
npx odla-ai operations wait <operation-id> --timeout 60 --json
|
|
288
334
|
npx odla-ai calendar status --env dev
|
|
289
335
|
npx odla-ai calendar calendars --env dev
|
|
290
336
|
npx odla-ai calendar connect --env dev
|
|
@@ -483,6 +529,10 @@ claimable Studio request, and the public start/poll shape intentionally does not
|
|
|
483
529
|
reveal whether an account exists. The signed-in matching user must explicitly
|
|
484
530
|
review the exact code before it becomes pending, and only one claimed pending
|
|
485
531
|
or approved-but-uncollected request can be active for that user.
|
|
532
|
+
For an ordinary request, Studio also requires at least one exact project
|
|
533
|
+
selection. The credential receives project metadata, PM, discussion, and
|
|
534
|
+
brand-candidate editing grants only for those projects, never ambient owner
|
|
535
|
+
access, app administration, or brand approval.
|
|
486
536
|
|
|
487
537
|
Developer grants are tracked by id, owner, label, scopes, creation/expiry,
|
|
488
538
|
last use, and revocation state. The plaintext token is delivered once to the
|