@odla-ai/cli 0.25.22 → 0.25.23

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
@@ -161,10 +161,12 @@ owner-visible Registry projection before provisioning:
161
161
 
162
162
  ```bash
163
163
  npx odla-ai config diff --json
164
- npx odla-ai config plan --json
164
+ npx odla-ai config plan --json > .odla/config-plan.json
165
+ npx odla-ai config apply --plan .odla/config-plan.json --json
166
+ npx odla-ai operations wait <operation-id> --json
165
167
  ```
166
168
 
167
- Both commands are read-only and request only a short-lived,
169
+ `diff` and `plan` are read-only and request only a short-lived,
168
170
  owner-approvable `app:config:read` capability. It opens only exact-id
169
171
  `GET /registry/apps/<appId>` reads for apps the approver owns; app listing,
170
172
  writes, PM, Discussions, directory access, data-plane delegation, and every
@@ -174,14 +176,29 @@ status, field provenance, and a bounded coverage declaration. Runtime auth or
174
176
  links omitted from project config stay visible as `unmanaged` rather than
175
177
  being silently overwritten.
176
178
 
177
- `plan` freezes those revisions plus ordered actions into a stable plan digest.
179
+ `plan` v2 freezes those content revisions, the monotonic Registry
180
+ `registry:<number>` revision, and ordered actions into a stable digest.
178
181
  Enable/configure actions are dependency-first; proposed disablements are
179
- dependent-first, high-risk, approval-required, and Studio-only. Conditional,
180
- resumable `config apply` is intentionally not exposed yet. The plan names the
181
- existing provision, rename, and Studio steps that can be reviewed separately,
182
- and explicitly excludes schema, rules, integration seeds, credentials, vault
183
- or Worker secrets, OAuth connection state, and opaque controller-assigned
184
- service fields rather than claiming whole-system convergence.
182
+ dependent-first, high-risk, approval-required, and Studio-only.
183
+
184
+ `config apply` accepts only that saved JSON plan. Before requesting authority it
185
+ recomputes the digest, verifies the selected app/platform, confirms checked-in
186
+ intent has not changed, and rejects every production, destructive,
187
+ approval-marked, high-risk, Studio, auth, creation, or disable action. The
188
+ short-lived `app:config:write` grant reaches only this app's operation
189
+ reserve/resume/read routes; it cannot enumerate apps or call direct mutation
190
+ routes. A deterministic default idempotency key makes retrying the same plan
191
+ resume the same durable journal entry, while the Registry CAS revision rejects
192
+ stale state.
193
+
194
+ Apply prints the operation receipt, including ordered step attempts and its
195
+ Studio recovery URL. `operations get` reads one exact id without replaying it;
196
+ `operations wait` polls that id for 60 seconds by default (`--timeout` and
197
+ `--interval` are explicit seconds). A still-running bounded wait exits 75 after
198
+ printing its last receipt. Every terminal receipt is independently
199
+ digest-verified by the CLI before success. Schema, rules, integration seeds,
200
+ credentials, vault or Worker secrets, OAuth connection state, and opaque
201
+ controller-assigned service fields remain outside this boundary.
185
202
 
186
203
  **Runbooks are procedure; JSDoc is API.** What a function takes, returns, and
187
204
  guarantees is documented on the export itself, ships in the installed
@@ -284,7 +301,10 @@ npx odla-ai setup
284
301
  npx odla-ai init --app-id my-app --name "My App"
285
302
  npx odla-ai doctor
286
303
  npx odla-ai config diff --json
287
- npx odla-ai config plan --json
304
+ npx odla-ai config plan --json > .odla/config-plan.json
305
+ npx odla-ai config apply --plan .odla/config-plan.json --json
306
+ npx odla-ai operations get <operation-id> --json
307
+ npx odla-ai operations wait <operation-id> --timeout 60 --json
288
308
  npx odla-ai calendar status --env dev
289
309
  npx odla-ai calendar calendars --env dev
290
310
  npx odla-ai calendar connect --env dev