@odla-ai/cli 0.25.20 → 0.25.22

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
@@ -79,6 +79,7 @@ ODLA_DEV_TOKEN=... npx @odla-ai/cli pm handoff --app <appId>
79
79
  ODLA_DEV_TOKEN=... npx @odla-ai/cli discuss list --app <appId> --json
80
80
  ODLA_DEV_TOKEN=... npx @odla-ai/cli o11y status --app <appId> --env prod --json
81
81
  ODLA_DEV_TOKEN=... npx @odla-ai/cli whoami --json
82
+ npx @odla-ai/cli platform status --context production --json
82
83
  npx @odla-ai/cli pm handoff --context production --json
83
84
  npx @odla-ai/cli runbook new deploy --context production --title Deploy --file deploy.md
84
85
  ```
@@ -141,6 +142,47 @@ jobs, missing canary configuration, stale probes, and partial
141
142
  socket-reconciliation coverage remain explicit fields. Authentication progress
142
143
  is stderr-only, so stdout is a single JSON document.
143
144
 
145
+ For platform-wide operations, `platform status --json` requests only the
146
+ short-lived, admin-approved `platform:status:read` capability and reads the
147
+ same `odla.platform-status/v1` snapshot as Studio. It works outside a project
148
+ checkout, derives its complete six-Worker inventory from the deployment
149
+ catalog, probes private services over bindings, and joins observed release
150
+ identity with retained Cloudflare request/error/CPU/wall-time/memory evidence.
151
+ Unavailable health, credentials, versions, or provider snapshots remain
152
+ explicit rather than becoming zero; the document includes stable reason codes
153
+ and exact next actions. The latest successful main deployment persists its
154
+ normalized receipt in Registry D1 after exact-version probes pass. Fleet status
155
+ therefore compares that verified expectation with the Worker answering now and
156
+ reports `matched`, `drifted`, or `unknown`; an empty or unavailable receipt
157
+ ledger degrades instead of silently treating observed health as intended state.
158
+
159
+ For repository-managed settings, compare checked-in intent with the live
160
+ owner-visible Registry projection before provisioning:
161
+
162
+ ```bash
163
+ npx odla-ai config diff --json
164
+ npx odla-ai config plan --json
165
+ ```
166
+
167
+ Both commands are read-only and request only a short-lived,
168
+ owner-approvable `app:config:read` capability. It opens only exact-id
169
+ `GET /registry/apps/<appId>` reads for apps the approver owns; app listing,
170
+ writes, PM, Discussions, directory access, data-plane delegation, and every
171
+ other Registry route remain closed. `diff` emits separate SHA-256 revisions for
172
+ desired and observed state, explicit `in_sync`, `different`, or `unmanaged`
173
+ status, field provenance, and a bounded coverage declaration. Runtime auth or
174
+ links omitted from project config stay visible as `unmanaged` rather than
175
+ being silently overwritten.
176
+
177
+ `plan` freezes those revisions plus ordered actions into a stable plan digest.
178
+ 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.
185
+
144
186
  **Runbooks are procedure; JSDoc is API.** What a function takes, returns, and
145
187
  guarantees is documented on the export itself, ships in the installed
146
188
  `.d.ts`, and renders per package at <https://odla.ai/docs>. A runbook will tell
@@ -241,6 +283,8 @@ npx odla-ai whoami
241
283
  npx odla-ai setup
242
284
  npx odla-ai init --app-id my-app --name "My App"
243
285
  npx odla-ai doctor
286
+ npx odla-ai config diff --json
287
+ npx odla-ai config plan --json
244
288
  npx odla-ai calendar status --env dev
245
289
  npx odla-ai calendar calendars --env dev
246
290
  npx odla-ai calendar connect --env dev
package/REQUIREMENTS.md CHANGED
@@ -12,6 +12,12 @@ Agnacl, but none should mention or special-case Agnacl.
12
12
  - The CLI must validate that contract without network calls.
13
13
  - The CLI must show a dry-run plan before creating platform state or writing
14
14
  credentials.
15
+ - The CLI must compare checked-in Registry intent with live owner-visible
16
+ state through a short-lived exact read capability, emit separate stable
17
+ desired/observed revisions and provenance, distinguish unmanaged runtime
18
+ settings from drift, and freeze ordered secret-free actions into a plan
19
+ digest. It must disclose data-plane and secret coverage gaps and must not
20
+ expose apply until writes are conditional and resumable.
15
21
  - The CLI must treat platform registry and odla-db as separate endpoints. They
16
22
  may be the same in some deployments, but generated configs must not imply it.
17
23
  - If a platform or credential change is deterministic from `odla.config.mjs`,