octwin-cli 0.1.13 → 0.1.15

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
@@ -5,6 +5,64 @@ Format: [Keep a Changelog](https://keepachangelog.com/) — newest first, bucket
5
5
  **Added · Changed · Deprecated · Removed · Fixed · Security**. The platform-wide view lives in the
6
6
  repo root [`CHANGELOG.md`](../../CHANGELOG.md); this file is the CLI-only cut that ships with the package.
7
7
 
8
+ ## [0.1.15] - 2026-07-25
9
+
10
+ ### Added
11
+ - **`octwin agents [packId::agentId] [--prompt]` — see what your agent actually runs as.** The platform
12
+ gained *governed* agent settings: an operator platform default can override the `default_model`
13
+ (and history window / working-memory toggle) your manifest declares, and that override is invisible
14
+ from the pack source. The command prints each governed setting's **effective** value, **which layer
15
+ won** (project override → platform default → pack manifest), and warns explicitly when your pack's
16
+ declared value is *not* in force. `--prompt` prints the exact system prompt the LLM sees for this
17
+ project (pack instructions + platform protocol + any project overlay).
18
+ - **`octwin orders [reference_id]` — the commerce a conversation produced.** The list (number,
19
+ status/payment, total, contact) or one order with its line items, the
20
+ subtotal/tax/shipping/discount/total breakdown, `payment_ref`, and the allowed transitions. On a
21
+ `pending`/`none` payment it explains *why that's expected*: the forward payment lifecycle is
22
+ **webhook-owned** (not patchable), and the default gateway-less `manual` driver makes
23
+ `payment_request` take its `empty` port — so the flow should confirm pay-on-delivery, not error.
24
+ - **`octwin analytics [entity]` — stage conversion for any pipelined entity.** The funnel engine that
25
+ powered journeys is now generic, so any entity declared with a `pipeline:` charts conversion +
26
+ drop-off (`--overview` / `--milestones` / `--trends` / `--cost`, and `--stage <id>` for the records
27
+ currently at a stage). An empty result names **both** causes the platform folds into one response —
28
+ no `pipeline:`, or no `view` grant on `record.<entity>`.
29
+ - **`octwin catalog [--readiness]`** — commerce products with price, availability and stock
30
+ (`untracked` when the SKU isn't inventory-tracked), plus the WhatsApp catalog binding.
31
+ `--readiness` runs the Meta Graph checklist with each failing item's suggested fix.
32
+ - **`octwin scheduling [--slots <resourceRecordId>]`** — the engine state (bookable resource types,
33
+ upcoming slots, booked seats) or the computed slots for one resource. This is how you verify the
34
+ availability rules a `deploy --seed` created, which 0.1.14 could create but not read back.
35
+
36
+ ### Changed
37
+ - **Auth failures now name the scope the command needs.** Every 401/403 appends the required scope
38
+ (and the plan feature, where the route is entitlement-gated) from one client-side mirror of the
39
+ platform's scope registry — replacing the per-command hardcoded strings, several of which named no
40
+ scope at all. It also spells out that `pack:deploy` / `media:generate` are direct-grant only, so a
41
+ `tenant:admin` preset token does **not** confer them (the most common "but my token is admin" dead end).
42
+
43
+ ## [0.1.14] - 2026-07-23
44
+
45
+ ### Fixed
46
+ - **A failed demo seed no longer reports a clean `✓`.** `deploy` softens non-fatal
47
+ install steps (e.g. a demo-seed row) to warning frames, but the summary still printed
48
+ `✓ Deployed` and exited 0 — so a deploy that seeded ZERO records read as success (the
49
+ false-✓ trap). `deploy` now collects those step errors, prints `⚠ Deployed with N
50
+ warning(s) — data may be incomplete` with each message, and exits non-zero so CI /
51
+ a `deploy && chat` chain catches it.
52
+
53
+ ### Added
54
+ - **`login` echoes what the token reaches.** After saving, `octwin login` calls
55
+ `/api/self/t/whoami` and prints the workspace, project pin, and scopes — so a fresh
56
+ token self-identifies without a second `octwin whoami` (best-effort; a network failure
57
+ never fails the save).
58
+ - **`validate --remote` surfaces warnings + the data-store trap.** The remote validate now
59
+ renders advisory `⚠` warnings (which don't block deploy) and, for a pack declaring
60
+ `required_adapters: [data-store]`, reports the missing-data-store error the deploy would
61
+ have 409'd on — plus a warning that an `xrm.yaml` pack usually shouldn't declare that
62
+ adapter at all. It also now catches (offline) a list-form `entities:` block and a
63
+ `localized: true` field seeded with a bare string — traps that previously surfaced only
64
+ mid-seed at deploy.
65
+
8
66
  ## [0.1.13] - 2026-07-22
9
67
 
10
68
  ### Added
package/README.md CHANGED
@@ -70,6 +70,11 @@ octwin status # "✓ live and current" once it's warm
70
70
  | `octwin logs` | List recent conversations (handle, status, last activity; `--as` filters), or show one conversation's full event timeline — including what each turn rendered. `--json` for raw payloads. |
71
71
  | `octwin records` | Inspect the pack's XRM data (needs a `records:read` token). No args = list entities. |
72
72
  | `octwin cases` | Inspect casework (support tickets): the inbox, one case + its timeline and decisions, or `--queues` for queue keys + open counts. |
73
+ | `octwin agents` | The agent roster with each agent's **effective** model / history window and **which layer set it** (project override → platform default → pack manifest) — an operator platform default can override what your manifest declares. `--prompt` prints the exact system prompt the LLM sees. Needs `agents:read`. |
74
+ | `octwin orders` | The orders a conversation produced. No args = the list; with a `reference_id` = line items, the subtotal/tax/shipping/discount/total breakdown, `payment_ref`, and the allowed transitions. Needs `orders:read` + the `orders` plan feature. |
75
+ | `octwin analytics` | Stage-by-stage conversion for **any** entity declared with a `pipeline:` (`--overview` / `--milestones` / `--trends` / `--cost`; `--stage <id>` lists the records currently at a stage). Needs `records:read`. |
76
+ | `octwin catalog` | Commerce products with price / availability / stock, plus the WhatsApp catalog binding. `--readiness` runs the Meta Graph checklist. Needs `catalog:read` + the `catalog` plan feature. |
77
+ | `octwin scheduling` | The scheduling engine's state, or `--slots <resourceRecordId>` for the slots one bookable resource actually computes — how you verify the availability rules `deploy --seed` created. Needs `scheduling:read`. |
73
78
  | `octwin platform-kb pull` | Pull the platform's capability reference (built-ins, primitives, render intents, flow-DSL — as markdown + JSON) into `.octwin/platform-kb/`, for the **`octwin-pack`** Claude Code authoring plugin to consult. |
74
79
  | `octwin test` | Alias for `octwin validate --remote` — the platform's full manifest + flow-DSL check. |
75
80
  | `octwin help` | Show usage. Every subcommand also answers `--help`. |
@@ -90,6 +95,30 @@ octwin logs --as tester1 # find the conversation, then:
90
95
  octwin logs <conversationId> # the full timeline (taps, renders, tool events)
91
96
  ```
92
97
 
98
+ ### Reading back the state your pack created
99
+
100
+ `chat`/`logs` show what the bot *said*; these show what it *did*. A 401/403 on any of them names the
101
+ token scope (and plan feature) that command needs, so you can mint a wider token instead of guessing.
102
+
103
+ ```bash
104
+ octwin agents # effective model per agent + which layer set it
105
+ octwin agents my-pack::assistant --prompt # the exact system prompt the LLM sees
106
+ octwin orders # then: octwin orders <reference_id>
107
+ octwin analytics # then: octwin analytics <entity> [--stage <id>]
108
+ octwin catalog # products + stock + the WhatsApp binding
109
+ octwin scheduling --slots <resourceRecordId> # the slots your availability rules compute
110
+ ```
111
+
112
+ Three things worth knowing when you read the output:
113
+
114
+ - **A `pending` payment is usually correct.** The forward payment lifecycle is **webhook-owned**, and a
115
+ workspace with no gateway runs the credential-free `manual` driver — so `payment_request` takes its
116
+ `empty` port and your flow should confirm pay-on-delivery. `octwin orders <ref>` says this inline.
117
+ - **Your declared model may not be the one running.** An operator platform default overrides the pack
118
+ manifest; `octwin agents` is where that becomes visible.
119
+ - **An empty funnel has two causes** — the entity has no `pipeline:`, or your token's role has no `view`
120
+ grant on `record.<entity>`. The command prints both rather than a bare "no data".
121
+
93
122
  ## Configuration
94
123
 
95
124
  The deploy target has four settings. Three live in a committed **`pack.json`** at the root of your