@tinkerlandai/indiana-cli 0.3.13 → 0.3.14

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.14 — 2026-10-29
4
+
5
+ - Funnel commands accept only schema 5 author drafts; `funnels create` writes schema 5. Published Funnel snapshots (execution format) are not accepted as input.
6
+ - Preserve rotated credentials as pending until the original device authorization is verified, allowing recovery after an interrupted authorization read.
7
+ - Report management moves to an HTTPS subdomain with `MANAGEMENT_ORIGIN_MOVED` and the new server origin so users can sign in again explicitly.
8
+ - Remove retired subscription discount command stubs and refresh bundled management contracts.
9
+
3
10
  ## 0.3.13 — 2026-10-26
4
11
 
5
12
  - Remove the `indiana iam` commands. IAM files are generated by the `@tinkerlandai/indiana-iam` build package; `indiana-iam validate` replaces `indiana iam check`.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Indiana CLI
2
2
 
3
- Indiana CLI **0.3.13**, Node.js 22+. The executable is `indiana`. CLI versions are independent of the Customer SDKs.
3
+ Indiana CLI **0.3.14**, Node.js 22+. The executable is `indiana`. CLI versions are independent of the Customer SDKs.
4
4
 
5
5
  Install the public npm package:
6
6
 
@@ -11,7 +11,7 @@ indiana doctor --server https://tinker.cash --json
11
11
  indiana login --server https://tinker.cash
12
12
  ```
13
13
 
14
- For a reproducible installation, use `npm install -g @tinkerlandai/indiana-cli@0.3.13`. Uninstall with `npm uninstall -g @tinkerlandai/indiana-cli`. Node.js 22+ must be on PATH; the package includes the `indiana` command and npm installs its runtime dependencies.
14
+ For a reproducible installation, use `npm install -g @tinkerlandai/indiana-cli@0.3.14`. Uninstall with `npm uninstall -g @tinkerlandai/indiana-cli`. Node.js 22+ must be on PATH; the package includes the `indiana` command and npm installs its runtime dependencies.
15
15
 
16
16
  The existing website installation channel remains available on macOS and Linux:
17
17
 
@@ -51,7 +51,7 @@ Better Auth in the Indiana Admin issues and refreshes CLI tokens through Authori
51
51
 
52
52
  Implemented remote command surfaces include `login`, `whoami`, `auth status`, `logout`, `projects list`, and scoped `coupons`, `rewards` and `referral-programs` catalog/code/lifecycle operations. Their execution still requires current server registration, membership, role/App access and explicit resource grants. No local command proves those permissions.
53
53
 
54
- `coupons subscription`, `coupons subscription-state` and `coupons subscription-recover` are unavailable in the current management runtime. They return `CAPABILITY_UNAVAILABLE` (exit 7) before reading files or credentials or making requests. `capabilities` reports these separately; `--only-supported` excludes them. Customer/Feature/Product management and Offering/Paywall/Funnel authoring now have connected scoped operations. Scoped balances, usage, ledger, billing controls, analytics and Sandbox Stripe refunds also use the original Console handlers. Organization governance, GrowthBook administration, profile images and compatible integration configuration use explicit layered grants. The generated catalog records connected operations individually; App Manifest/consent scope remains unconnected, browser-only previews stay unavailable, and Apple/Google provider configuration and native Product bindings remain deferred. Inspect the operation catalog for exact availability; it does not certify every provider/business branch.
54
+ Customer/Feature/Product management and Offering/Paywall/Funnel authoring now have connected scoped operations. Scoped balances, usage, ledger, billing controls, analytics and Sandbox Stripe refunds also use the original Console handlers. Organization governance, experimentation administration, profile images and compatible integration configuration use explicit layered grants. The generated catalog records connected operations individually; App Manifest/consent scope remains unconnected, browser-only previews stay unavailable, and Apple/Google provider configuration and native Product bindings remain deferred. Inspect the operation catalog for exact availability; it does not certify every provider/business branch.
55
55
 
56
56
  Production OAuth and the scoped business slice are deployed at `https://tinker.cash`; `https://dev.tinker.cash` remains the separate Indiana-test deployment. Credentials and native OAuth clients are origin-bound and cannot be shared between them. See production acceptance for exact verified coverage and remaining gaps.
57
57
 
@@ -160,7 +160,7 @@ indiana code push ./template --json
160
160
 
161
161
  Use a new output directory. `indiana.source.json` freezes the target, App/environment, revision and baseline; `screen.json` holds the complete structured design and copy. HTML/CSS contents live under `html/<node-id>/<locale>.html` and `html/<node-id>/style.css`, with empty declarations in `screen.json`. Edit these files with your editor or AI agent. Exported JSON bundles from the Web editor are also accepted by check/diff/push. The Web editor imports either a bundle or the source directory, with a review before applying changes.
162
162
 
163
- Check and diff are offline; remote guards still apply when pushing. Pull requires `platform.read`; push requires `platform.write` and the existing native authoring role. Push saves a draft with its original revision, preserving all other Paywall/Funnel configuration. A template target creates a private copy. A revision conflict preserves local files. Successful pushes update the local baseline while retaining working files, including edits made during the request; server sanitization differences remain visible in the next diff. No command publishes, watches files, runs a preview server or stores credentials in a source package.
163
+ Check and diff are offline; remote guards still apply when pushing. Pull requires `platform.read`; push requires `platform.write` and the existing native authoring role. Push saves a draft with its original revision, preserving the target's other configuration. A template target creates a private copy. A revision conflict preserves local files. Successful pushes update the local baseline while retaining working files, including edits made during the request; server sanitization differences remain visible in the next diff. No command publishes, watches files, runs a preview server or stores credentials in a source package.
164
164
 
165
165
  ```sh
166
166
  indiana operations list --available --json
@@ -224,7 +224,7 @@ indiana offerings diff --against before.json --file after.json --json
224
224
  cat funnel.json | indiana funnels validate --file - --json
225
225
  ```
226
226
 
227
- Funnel input is the current editable draft; publish mode uses its publication-structure validator rather than the immutable delivery snapshot schema. Paywall input uses its current document schema, including the required published Offering reference for publication. Offering input is exactly `{ lookupKey, displayName, items, metadata }`: Product leaves at levels 1–3, groups at 1–2, at most 20 distinct Products, and empty groups only in draft mode. Offering has no invented schemaVersion or Package wrapper.
227
+ Funnel input is the current editable format-5 draft: screens choose Page/Popup content versions or Paywall Versions, and the compiled delivery snapshot with embedded screens is not accepted. Publish mode uses the draft's publication-structure validator, which also requires each Page/Popup choice to pin a version. Paywall input uses its current document schema, including the required published Offering reference for publication. Offering input is exactly `{ lookupKey, displayName, items, metadata }`: Product leaves at levels 1–3, groups at 1–2, at most 20 distinct Products, and empty groups only in draft mode. Offering has no invented schemaVersion or Package wrapper.
228
228
 
229
229
  All inputs use strict UTF-8/JSON and the existing 1,000,000-byte document budget. Validation reports `validation: local` and `serverChecks: not_run`; Product existence, Offering terms/membership, permissions and publication require the server. Diff emits escaped JSON Pointers and hashes, omits values, and caps displayed changes at 100 while preserving total/truncated counts.
230
230
 
@@ -258,7 +258,7 @@ See [CHANGELOG](CHANGELOG.md), [architecture design](../../docs/cli-management-d
258
258
 
259
259
  ## Configuration, results and finance reads
260
260
 
261
- The current source adds 28 finite GrowthBook read models to `capabilities.growthReaders`, each with `list` and `get <id>` aliases. For example:
261
+ The current source adds 28 finite experimentation read models to `capabilities.growthReaders`, each with `list` and `get <id>` aliases. For example:
262
262
 
263
263
  ```sh
264
264
  indiana growth features list --query limit=25 --json
@@ -279,7 +279,7 @@ indiana events list --query name=payment.failed --json
279
279
 
280
280
  Configuration requires App `platform.read`. Environment results additionally require the exact environment's `platform.read` and `analytics.read`. A write grant implies read only while the original grant remains valid under the current native role. Private objects retain their original ownership/share rules. The finite reader removes configuration analysis summaries and Data Source connection secrets, without expanding direct OAuth table access.
281
281
 
282
- GrowthBook lists return `{resource, rows, ids, nextCursor}`. Pass the unchanged `nextCursor` as `--query after=...`; default page size is 25, maximum 100, and a response-size boundary can end a page earlier. `parentId` filters child collections. The parallel `ids` array supplies the exact identity for each row, including collision-free composite revision/reference identities. Use `ids[n]` with `get` for `rows[n]`. Parent-filtered lists are the normal way to read those collections. Invoice pages keep their `after` cursor. Statement pages require the original `snapshotAt` plus all three cursor fields `afterAt`, `afterId`, `afterPosition`. Event pages require both `before` (timestamp) and `after` (event ID). Overview and event UTC date ranges are bounded to 90 days.
282
+ Experimentation lists return `{resource, rows, ids, nextCursor}`. Pass the unchanged `nextCursor` as `--query after=...`; default page size is 25, maximum 100, and a response-size boundary can end a page earlier. `parentId` filters child collections. The parallel `ids` array supplies the exact identity for each row, including collision-free composite revision/reference identities. Use `ids[n]` with `get` for `rows[n]`. Parent-filtered lists are the normal way to read those collections. Invoice pages keep their `after` cursor. Statement pages require the original `snapshotAt` plus all three cursor fields `afterAt`, `afterId`, `afterPosition`. Event pages require both `before` (timestamp) and `after` (event ID). Overview and event UTC date ranges are bounded to 90 days.
283
283
 
284
284
  This source expansion requires the matching server/database reader release. Local capability discovery does not assert that an older deployed server contains it. Apple/Google configuration and bindings remain deferred; SDK runtime calls and retired coupon subscription commands are outside this expansion.
285
285
 
@@ -106,6 +106,7 @@ var localErrorRecovery = {
106
106
  SERVER_ONLY: "fix_request",
107
107
  PROTOCOL_MISMATCH: "upgrade_sdk",
108
108
  IDENTITY_CHANGED: "reload_state",
109
+ INVALID_STATE: "reload_state",
109
110
  EVENT_QUEUE_FULL: "retry_same_request",
110
111
  // The original command or decision still owns the outcome.
111
112
  COMMAND_PENDING: "recover_operation",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  readJsonFile,
3
3
  readJsonStream
4
- } from "./chunk-VEDX3X5S.js";
4
+ } from "./chunk-HTY75R4M.js";
5
5
  export {
6
6
  readJsonFile,
7
7
  readJsonStream