diff --git a/CHANGE_LOG.md b/CHANGE_LOG.md index f0e31c1..1affca6 100644 --- a/CHANGE_LOG.md +++ b/CHANGE_LOG.md @@ -1,5 +1,28 @@ # Change Log +## 25/10/26 at 10:02:22 by [Ran Yahalom](mailto:ranya@wix.com) + +- Ran the general hosted replay of CLI 0.11.2 and skill 0.58.2 in Cursor on macOS with no replay id set, and recorded every release from 0.8.0 to 0.11.2 as `recommended` on the general rollout. The general rollout had been deferred since 0.8.0, so unverified harnesses (OpenClaw, Claude Code, Cursor) were never offered anything newer than 0.7.0, and CLIs before 0.11.2 stop at the first deferred release. The replay resumed a paid $1 booking in a new conversation, charged once, added the calendar event, ran a fresh Link sign-in, booked a pay-at-appointment service after the business's terms with nothing charged, and cancelled both bookings with status saying cancelled. Caveats are in the evidence: the restart was a new chat on the same machine, and the CLI was installed from the release commit's source folder before publication +- Added the general rollout to the test that replays the walk inside already-installed CLIs, so a CLI on 0.7.0 is shown to reach 0.11.2, and noted the general backfill in `ops/verified-harnesses.md` + +--- + +## 25/10/26 at 09:08:05 by [Ran Yahalom](mailto:ranya@wix.com) + +- Changed the update check so a `deferred` release holds back only itself. It used to stop at the first deferred release, so one held-back release (or a replay with no record for it) hid every later recommended release. Verified harnesses were never offered their approved pair, and unverified harnesses had the same problem on the general rollout. Released as 0.11.2 +- Recorded every release up to 0.11.2 as `recommended` for the Grok Bot, Base44 Superagent, and Muse replays, and pinned all three harnesses to 0.11.2 / skill 0.58.2. CLIs already installed there (0.10.0, 0.10.2, 0.11.1) still stop at the first gap, so without these records they could never reach the fixed CLI. Each added record says it was not replayed on that harness +- Added tests that a gap or a deferred release no longer blocks a later ready one, that a withdrawn release is never the target, that every verified harness is offered its registry pin from any release since its replay, and that the old installed walk reaches 0.11.2 on each harness. These keep the registry and the runtime decision from drifting apart again +- Rewrote the `deferred` rule in `CONTRIBUTING.md` and the backfill paragraph in `ops/verified-harnesses.md` to match, including that the backfill through 0.11.2 is a one-off. Raised the skill to 0.58.2 because re-pinning it to the new CLI changes `SKILL.md` + +--- + +## 25/10/26 at 08:06:47 by [Ran Yahalom](mailto:ranya@wix.com) + +- Recorded the Muse replay of CLI 0.11.1 and skill 0.58.1 so Muse is a verified harness with its own replay id, install guide, and approved pair. The signed wheel was installed in the Secure VM, the chosen $1 HVAC-Koby booking was resumed after the boot id changed, the charge went through once, Muse added the calendar event without handing the CLI a token, and cancelling afterwards made status say the booking is cancelled. The general rollout stays deferred, so Grok Bot and Base44 Superagent are not offered 0.11.1 +- Wrote Muse's restart and calendar rules from that run: the restart is a Secure VM replacement that keeps `/home/hatch/workspace` (there is no safe Reset button), and calendar is the delegated route that can read busy times + +--- + ## 23/10/26 at 22:03:47 by [Ran Yahalom](mailto:ranya@wix.com) - Raised the `booking-agent` skill frontmatter to 0.58.1 and updated its stale literal `--skill-version 0.58.0` example, and re-ran `scripts/sync_skill_bundle.py` to re-pin `README.md`, `packages/cli/README.md`, and `bundled_skill.md`. The CLI 0.11.1 bump had re-pinned the skill's CLI version without raising the skill's own frontmatter version, so the `version` CI job failed on pull request [#66](https://github.com/wix/booking-agent/pull/66) with "changed but its frontmatter version 0.58.0 is not above 0.58.0" diff --git a/booking-agent/CONTRIBUTING.md b/booking-agent/CONTRIBUTING.md index 20cbdde..a3a8c6a 100644 --- a/booking-agent/CONTRIBUTING.md +++ b/booking-agent/CONTRIBUTING.md @@ -157,7 +157,7 @@ Decide `change_type`, `update_status`, and `ecosystem_ready` in this order. Do n - `available`: a normal fix or internal improvement. Users are not prompted. - `recommended`: a ready feature with a clear benefit to users, or a broadly useful fix. Mentioned after a booking, or before one when it is relevant to it. A ready breaking release is offered before the next booking. - `urgent`: only for a security, data-loss, payment-safety, or severe correctness problem, and only with the release owner's approval written in the PR as `Release-owner approval: `. Offered before the next booking. - - `deferred`: the rollout is not finished or evidence is missing. Never offered, and a newer version is not offered past it either, because installing it would bring this release's changes too. + - `deferred`: the rollout is not finished or evidence is missing. That release is never offered, but a later `recommended` or `urgent` release still is (from CLI 0.11.2 on; older CLIs stop at the first deferred release). Installing the later release brings this release's changes too, so the later release's evidence has to cover them. - `withdrawn`: a released version that must not be installed any more. Needs a newer, installable `replacement_version`. 6. **Green CI is not readiness.** A newer version, passing tests, or a schema that validates does not show that the registry and live businesses work with the release. @@ -186,7 +186,7 @@ assumed from this general checklist or from another harness passing it. This checklist is the **unverified** replay. It is what Cursor, Claude Code, and any other harness without its own replay uses. Passing it moves `deferred` to `recommended` only for those harnesses. -A **verified** harness never inherits that result. Grok Bot and Base44 Superagent each have a replay in [ops/verified-harnesses.md](ops/verified-harnesses.md), including the restart that harness actually supports and whether calendar is connected. Passing one moves `deferred` to `recommended` only for the harnesses that share that replay. Two harnesses share a replay when both names in the registry point at the same replay id, so one successful run promotes both. The only way to recommend a release on a verified harness is to pass its replay and record that replay's rollout. A release that is `withdrawn` for everyone stays withdrawn for verified harnesses too. +A **verified** harness never inherits that result. Grok Bot, Base44 Superagent, and Muse each have a replay in [ops/verified-harnesses.md](ops/verified-harnesses.md), including the restart that harness actually supports and whether calendar is connected. Passing one moves `deferred` to `recommended` only for the harnesses that share that replay. Two harnesses share a replay when both names in the registry point at the same replay id, so one successful run promotes both. The only way to recommend a release on a verified harness is to pass its replay and record that replay's rollout. The one exception is the records through 0.11.2 that let CLIs older than 0.11.2 reach it (see [ops/verified-harnesses.md](ops/verified-harnesses.md)); do not add more. A release that is `withdrawn` for everyone stays withdrawn for verified harnesses too. Saved session files have their own rule. Adding an optional field keeps `STORE_SCHEMA_VERSION` and `SCHEMA_VERSION` in `session.py` as they are: older builds keep fields they do not know when they save. Raising either number makes every older build refuse the file and ask its user to update, so that is a breaking change, and its release cannot be `available`. @@ -198,7 +198,7 @@ What an installed assistant does with the decision: | `urgent`, or a ready `breaking` release that is `recommended` | Asked before the next booking starts | | `recommended` feature or fix | Offered after a booking; offered before one only when the request needs an affected capability; otherwise mentioned only if the assistant checks on the user's request | | `available` | Nothing | -| `deferred`, or any release after a `deferred` one | Nothing | +| `deferred` | Nothing for that release; a later ready release is still offered | | The installed version is `withdrawn` | Asked to move to `replacement_version` | Nothing is ever installed without the user's yes, never during a booking, and never from a source checkout. A user who says no is not asked about that version again. `BOOKING_AGENT_UPDATE_CHECK=0` turns all of it off. diff --git a/booking-agent/README.md b/booking-agent/README.md index dfcdcd0..2fb9840 100644 --- a/booking-agent/README.md +++ b/booking-agent/README.md @@ -23,8 +23,9 @@ These harnesses passed a hosted booking replay of their own. Follow the harness' | Harness | Install guide | Approved CLI | Approved skill | Hosted replay | |---|---|---|---|---| -| Base44 Superagent | [Install on Base44 Superagent](docs/harnesses/base44-superagent.md) | `0.10.2` | `0.57.4` | Passed 22 Oct 2026 with CLI 0.10.2 | -| Grok Bot | [Install on Grok Bot](docs/harnesses/grok-bot.md) | `0.10.0` | `0.57.2` | Passed 22 Oct 2026 with CLI 0.9.1 | +| Base44 Superagent | [Install on Base44 Superagent](docs/harnesses/base44-superagent.md) | `0.11.2` | `0.58.2` | Passed 22 Oct 2026 with CLI 0.10.2 | +| Grok Bot | [Install on Grok Bot](docs/harnesses/grok-bot.md) | `0.11.2` | `0.58.2` | Passed 22 Oct 2026 with CLI 0.9.1 | +| Muse | [Install on Muse](docs/harnesses/muse.md) | `0.11.2` | `0.58.2` | Passed 25 Oct 2026 with CLI 0.11.1 | On a verified harness, install the approved pair, not the latest release. A newer release has not passed that harness's replay yet, so the installed CLI will not offer it there either. More about verified harnesses, and how a harness gets added: [docs/harnesses](docs/harnesses/README.md). @@ -72,7 +73,7 @@ booking-agent skill print \ Each release also publishes the skill at an immutable tag, `skill-v`, and signs it with the same workflow that signs the wheels, so a harness can pin and verify the exact text it follows: ```bash -curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.1/booking-agent/skills/booking-agent/SKILL.md +curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.2/booking-agent/skills/booking-agent/SKILL.md gh attestation verify SKILL.md \ --repo wix/booking-agent \ --signer-workflow wix/booking-agent/.github/workflows/release.yml diff --git a/booking-agent/docs/harnesses/README.md b/booking-agent/docs/harnesses/README.md index a768316..4d148b8 100644 --- a/booking-agent/docs/harnesses/README.md +++ b/booking-agent/docs/harnesses/README.md @@ -9,8 +9,9 @@ that release passes the same replay. | Harness | Install guide | Approved CLI | Approved skill | Hosted replay | |---|---|---|---|---| -| Base44 Superagent | [Install on Base44 Superagent](base44-superagent.md) | `0.10.2` | `0.57.4` | Passed 22 Oct 2026 with CLI 0.10.2 | -| Grok Bot | [Install on Grok Bot](grok-bot.md) | `0.10.0` | `0.57.2` | Passed 22 Oct 2026 with CLI 0.9.1 | +| Base44 Superagent | [Install on Base44 Superagent](base44-superagent.md) | `0.11.2` | `0.58.2` | Passed 22 Oct 2026 with CLI 0.10.2 | +| Grok Bot | [Install on Grok Bot](grok-bot.md) | `0.11.2` | `0.58.2` | Passed 22 Oct 2026 with CLI 0.9.1 | +| Muse | [Install on Muse](muse.md) | `0.11.2` | `0.58.2` | Passed 25 Oct 2026 with CLI 0.11.1 | The approved CLI is the newest release that the harness's replay recommends. It can be diff --git a/booking-agent/docs/harnesses/base44-superagent.md b/booking-agent/docs/harnesses/base44-superagent.md index e1e764b..784b26b 100644 --- a/booking-agent/docs/harnesses/base44-superagent.md +++ b/booking-agent/docs/harnesses/base44-superagent.md @@ -7,13 +7,15 @@ and a verified copy of the CLI all live there. | Item | Value | |---|---| -| Approved Booking Agent CLI | `0.10.2` | -| Approved Booking Agent skill | `0.57.4`, bundled in that CLI | +| Approved Booking Agent CLI | `0.11.2` | +| Approved Booking Agent skill | `0.58.2`, bundled in that CLI | | Replay id | `base44-superagent` | | Hosted replay | Passed 22 Oct 2026 with CLI 0.10.2 and skill 0.57.4 | +The approved CLI carries every change the replayed CLI ran. Its release notes record why it is approved. + ```bash -cli=0.10.2 +cli=0.11.2 replay=base44-superagent ``` diff --git a/booking-agent/docs/harnesses/grok-bot.md b/booking-agent/docs/harnesses/grok-bot.md index 6e41529..49b88b5 100644 --- a/booking-agent/docs/harnesses/grok-bot.md +++ b/booking-agent/docs/harnesses/grok-bot.md @@ -6,15 +6,15 @@ Only the Grok Bot app is installed by you; everything below runs on that cloud c | Item | Value | |---|---| -| Approved Booking Agent CLI | `0.10.0` | -| Approved Booking Agent skill | `0.57.2`, bundled in that CLI | +| Approved Booking Agent CLI | `0.11.2` | +| Approved Booking Agent skill | `0.58.2`, bundled in that CLI | | Replay id | `grok-bot` | | Hosted replay | Passed 22 Oct 2026 with CLI 0.9.1 and skill 0.57.1 | The approved CLI carries every change the replayed CLI ran. Its release notes record why it is approved. ```bash -cli=0.10.0 +cli=0.11.2 replay=grok-bot ``` diff --git a/booking-agent/docs/harnesses/muse.md b/booking-agent/docs/harnesses/muse.md new file mode 100644 index 0000000..f2496e4 --- /dev/null +++ b/booking-agent/docs/harnesses/muse.md @@ -0,0 +1,126 @@ +# Install on Muse + +Muse runs the Booking Agent inside its Secure VM. The folder that survives a replacement +of that VM is `/home/hatch/workspace`, so the booking, the Link sign-in, the skill, and +a verified copy of the CLI all live there. + + +| Item | Value | +|---|---| +| Approved Booking Agent CLI | `0.11.2` | +| Approved Booking Agent skill | `0.58.2`, bundled in that CLI | +| Replay id | `muse` | +| Hosted replay | Passed 25 Oct 2026 with CLI 0.11.1 and skill 0.58.1 | + +The approved CLI carries every change the replayed CLI ran. Its release notes record why it is approved. + +```bash +cli=0.11.2 +replay=muse +``` + + +## Fastest install: paste this into Muse + +```text +Install the Booking Agent inside your Secure VM, not on my computer, by following +https://github.com/wix/booking-agent/blob/master/booking-agent/docs/harnesses/muse.md +exactly. Use the pinned versions in that guide, not the latest release, and keep +everything it saves under /home/hatch/workspace. List the commands before you run them +and wait for my OK. Stop after the checks at the end and do not start a booking. +``` + +When the checks pass, start a new chat so Muse loads the skill from the beginning. + +## What the install runs + +1. Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and Node.js if + they are missing, then `link-cli`, which handles Link sign-in and payment approval. + Keep that install under `/home/hatch/workspace`, which is the folder this VM keeps: + + ```bash + root=/home/hatch/workspace + npm install -g @stripe/link-cli --prefix "$root/npm-global" + export PATH="$root/npm-global/bin:$PATH" + ``` + +2. Set the pinned values from the table above (`cli=...` and `replay=...`). + +3. Download the approved CLI, check its signature from this repository's release + workflow, and install it from the checked file: + + ```bash + mkdir -p "$root/verified-wheels" + uvx --python 3.12 pip download "booking-agent-cli==$cli" --no-deps --only-binary :all: \ + -d "$root/verified-wheels" + uvx --python 3.12 pypi-attestations verify pypi --repository https://github.com/wix/booking-agent \ + "$root/verified-wheels/booking_agent_cli-$cli-py3-none-any.whl" + uv tool install --force "$root/verified-wheels/booking_agent_cli-$cli-py3-none-any.whl" + ``` + +4. Write the skill bundled in that CLI. If Muse also requires a `skill.yaml` next to + it, that file may point at this one. Leave the skill text unchanged: + + ```bash + mkdir -p "$root/custom-skills/booking-agent" + booking-agent skill print \ + | python3 -c 'import json,sys; sys.stdout.write(json.load(sys.stdin)["data"]["skill_text"])' \ + > "$root/custom-skills/booking-agent/SKILL.md" + ``` + +5. Keep the booking and the Link sign-in in `/home/hatch/workspace`, and set this + harness's replay so updates follow Muse's own rollout: + + ```bash + booking-agent runtime prepare --persistent-root "$root" + grep -qx "BOOKING_AGENT_REPLAY=$replay" ~/.booking-agent/.env 2>/dev/null \ + || printf '\nBOOKING_AGENT_REPLAY=%s\n' "$replay" >> ~/.booking-agent/.env + ``` + +6. Check the result: + + ```bash + readlink -f ~/.booking-agent/.env # the file is inside /home/hatch/workspace + booking-agent skill version # data shows the approved cli_version and skill_version + booking-agent config show # BOOKING_AGENT_REPLAY is muse, from "user .env" + booking-agent runtime doctor # healthy is true + link-cli --help + ``` + + Before the first VM replacement, `runtime doctor` can report + `folder_not_yet_shown_to_survive_a_restart`. That is expected. + +## After the Secure VM is replaced + +A replacement can remove installed programs. The workspace, including the verified +wheel and the skill, stays. In the chat that continues the booking, set `cli` as in +step 2, reinstall whatever is missing, and relink the saved folder. `booking-agent flow +status` then finds the saved booking and the Link sign-in, so there is no new search +and no second sign-in: + +```bash +export PATH="/home/hatch/workspace/npm-global/bin:$PATH" +uv tool install --force "/home/hatch/workspace/verified-wheels/booking_agent_cli-$cli-py3-none-any.whl" +npm install -g @stripe/link-cli --prefix /home/hatch/workspace/npm-global +booking-agent runtime prepare --persistent-root /home/hatch/workspace +``` + +Do not use Reset in Muse's data settings. That deletes the computer. A new chat on the +same boot is not this replacement: the boot id has to change. + +## What to expect + +- **Calendar.** Muse reads and writes Google Calendar itself and does not hand the CLI + a token. The assistant connects with `--route delegated --delegated-can-read-busy`, + reports busy times when asked, and after payment creates the one event it was given + and reports that event back. The booked message includes the raw calendar link. +- **Payment link.** After you say yes, Muse may ask once more before it posts the Link + approval URL. That second yes is Muse's own safety check. Approve the payment only + in Link. +- **Updates.** The CLI offers a newer release only after it passes the Muse replay. + Until then it reports that the installed version is up to date. +- **Not replayed here yet:** a pay-at-appointment booking (one paid in person, with no + charge at booking time). A paid booking, and cancelling it afterwards, were replayed. + +Replay procedure and evidence: [ops/verified-harnesses.md](../../ops/verified-harnesses.md#muse) +and the release notes for the approved CLI. diff --git a/booking-agent/ops/verified-harnesses.json b/booking-agent/ops/verified-harnesses.json index 9a56470..a486f62 100644 --- a/booking-agent/ops/verified-harnesses.json +++ b/booking-agent/ops/verified-harnesses.json @@ -4,8 +4,8 @@ "guide": "docs/harnesses/base44-superagent.md", "name": "Base44 Superagent", "recommended": { - "cli": "0.10.2", - "skill": "0.57.4" + "cli": "0.11.2", + "skill": "0.58.2" }, "replay": "base44-superagent", "replayed": { @@ -19,8 +19,8 @@ "guide": "docs/harnesses/grok-bot.md", "name": "Grok Bot", "recommended": { - "cli": "0.10.0", - "skill": "0.57.2" + "cli": "0.11.2", + "skill": "0.58.2" }, "replay": "grok-bot", "replayed": { @@ -29,6 +29,21 @@ "skill": "0.57.1" }, "status": "verified" + }, + "muse": { + "guide": "docs/harnesses/muse.md", + "name": "Muse", + "recommended": { + "cli": "0.11.2", + "skill": "0.58.2" + }, + "replay": "muse", + "replayed": { + "cli": "0.11.1", + "date": "2026-10-25", + "skill": "0.58.1" + }, + "status": "verified" } }, "schema_version": 2 diff --git a/booking-agent/ops/verified-harnesses.md b/booking-agent/ops/verified-harnesses.md index 288bc9a..6046172 100644 --- a/booking-agent/ops/verified-harnesses.md +++ b/booking-agent/ops/verified-harnesses.md @@ -16,11 +16,18 @@ stays `deferred`, even when the general status is `recommended`. A release that CLI versions before 0.10.0 do not understand replay-specific rollouts. A verified harness installs its approved release manually, from its guide in [docs/harnesses](../docs/harnesses/README.md). From 0.10.0 onward, the installed CLI -enforces the harness rollout for later updates. The completed Grok Bot replay is -recorded as `recommended` for 0.9.0, 0.9.1, and 0.10.0, so its cumulative rollout has no -deferred gap through 0.10.0. The completed Base44 Superagent replay of 0.10.2 is -recorded as `recommended` for 0.10.0, 0.10.1, and 0.10.2, so an installed 0.10.0 or -0.10.1 is offered 0.10.2. +enforces the harness rollout for later updates. + +From 0.11.2 onward, the installed CLI skips a `deferred` release instead of stopping at +it, so only the newest release a replay recommends needs a record for that replay. +CLIs from 0.10.0 to 0.11.1 still stop at the first release with no `recommended` record +for their replay. To let them reach 0.11.2, every release up to 0.11.2 is recorded as +`recommended` for Grok Bot (from 0.9.0), Base44 Superagent (from 0.10.0), and Muse (from +0.11.1). The records after each harness's replayed release say they were not replayed +there and exist only for that walk. Do not add records like these for later releases. +The general rollout recommends every release from 0.8.0 to 0.11.2 for the same reason, +backed by the general replay of 0.11.2 on 25/10/26, so unverified harnesses on 0.7.0 or +later reach 0.11.2 too. ## Registry @@ -41,6 +48,7 @@ values. |---|---|---|---| | Grok Bot | `grok-bot` | `grok-bot` | Unavailable. Expect a clear statement that no calendar event was added. | | Base44 Superagent | `base44-superagent` | `base44-superagent` | Connected. Expect the raw calendar event link. | +| Muse | `muse` | `muse` | Delegated, and Muse can read busy times. The CLI receives no token. Expect the raw calendar event link, and availability marked as checked. | To add a harness that shares an existing replay, point its id at that replay id and do not invent a second procedure. To add a harness with a different restart or calendar @@ -78,6 +86,11 @@ writes the event) also checks the report-back: A harness's calendar row changes to delegated only after a replay of these steps passes. +A harness that also passes `--delegated-can-read-busy` follows the same report-back, with one +difference at availability: the CLI asks for busy intervals over its search window, filters the +slots from that report, and marks the calendar checked. Record that harness on this variant. +The events-only sentence above, that the calendar was not checked, does not apply to it. + Set the assigned replay before the run. On a host that does not inject it, put this non-secret setting in the persistent Booking Agent `.env` file so every CLI process sees it: @@ -138,3 +151,46 @@ changed. When the host has no reset control, do the same and record it as a cave 4. Expect "You're booked" and the raw calendar event link. 5. Ask "what's going on?" and run `booking-agent runtime doctor`. Expect `survived_restart: true`, `healthy: true`, and no findings. + +## Muse + +Muse keeps one Secure VM. Files under `/home/hatch/workspace` survive a replacement of +that VM. There is no `/workspace` on this host. Installed programs outside the workspace +may need reinstalling from a copy kept there. Muse does not inject `BOOKING_AGENT_REPLAY`; +the install writes it into the persistent Booking Agent `.env`. + +There is no button for the replacement. Reset in Muse's data settings deletes the +computer, including chats, files, and memory, and must not be used. A new chat on the +same boot does not change the boot id. + +The restart that counts is a replacement that changes `/proc/sys/kernel/random/boot_id` +and keeps `/home/hatch/workspace`. On the 0.11.1 replay the slot was chosen on boot +`ba0721f8-d5a2-414b-809a-e50b1b41aa31`, and the booking was continued the next morning on +boot `2c487b69-16fa-4354-b279-6fb0cf4ce477`. + +Google Calendar stays on Muse's side. The CLI never receives a token. Connect with +`--route delegated --delegated-can-read-busy`, report the busy intervals the CLI asks +for, and after payment create the one event it asks for and report that event back. + +1. Put `BOOKING_AGENT_REPLAY=muse` in the persistent `~/.booking-agent/.env` before the + first booking command. +2. Start the booking. When the CLI asks, connect the delegated route above and report + busy times. Choose a slot. Stop there. Do not say yes, pay, or create an event. +3. Wait until the boot id changes. Do not use Reset. +4. Continue the saved booking. Reinstall `booking-agent` from the verified wheel under + `/home/hatch/workspace/verified-wheels` if it is missing, and reinstall `link-cli` the + same way. Run `booking-agent runtime prepare --persistent-root /home/hatch/workspace`. + Do not search again and do not sign in again unless Link expired. +5. Expect "You're booked" and the raw calendar event link. `flow status` must not ask + for that create again. +6. Cancel or move the booking and report the delete or move the same way. After a + cancel, `flow status` says the booking is cancelled and does not repeat the calendar + link. +7. Ask "what's going on?" and run `booking-agent runtime doctor`. Expect + `survived_restart: true`, `survived_restart_basis: boot_id_changed`, `healthy: true`, + and no findings. + +A doctor result of `folder_not_yet_shown_to_survive_a_restart` before the first +replacement is expected. On the 0.11.1 run Muse held the Link approval URL behind its +own safety check until the user said yes a second time, then noticed the approval +without another message. That second yes is the harness, and it is not a second charge. diff --git a/booking-agent/packages/cli/README.md b/booking-agent/packages/cli/README.md index f203264..9433341 100644 --- a/booking-agent/packages/cli/README.md +++ b/booking-agent/packages/cli/README.md @@ -40,7 +40,7 @@ Each release also publishes that skill at an immutable `skill-v` tag an the release workflow, so a harness can pin and verify the exact text it follows: ```bash -curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.1/booking-agent/skills/booking-agent/SKILL.md +curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.2/booking-agent/skills/booking-agent/SKILL.md gh attestation verify SKILL.md --repo wix/booking-agent \ --signer-workflow wix/booking-agent/.github/workflows/release.yml ``` diff --git a/booking-agent/packages/cli/pyproject.toml b/booking-agent/packages/cli/pyproject.toml index 2cb092a..29ef956 100644 --- a/booking-agent/packages/cli/pyproject.toml +++ b/booking-agent/packages/cli/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "booking-agent-cli" -version = "0.11.1" +version = "0.11.2" description = "The Booking Agent CLI: a stateful USP booking flow with hard gates, plus its USP protocol library." readme = "README.md" license = "Apache-2.0" diff --git a/booking-agent/packages/cli/src/booking_agent/__init__.py b/booking-agent/packages/cli/src/booking_agent/__init__.py index 7f31e8c..d8c002e 100644 --- a/booking-agent/packages/cli/src/booking_agent/__init__.py +++ b/booking-agent/packages/cli/src/booking_agent/__init__.py @@ -3,4 +3,4 @@ Ships in the booking-agent-cli wheel and never imports ``booking_agent_cli``. """ -__version__ = "0.11.1" +__version__ = "0.11.2" diff --git a/booking-agent/packages/cli/src/booking_agent_cli/__init__.py b/booking-agent/packages/cli/src/booking_agent_cli/__init__.py index fd7ed7b..af19098 100644 --- a/booking-agent/packages/cli/src/booking_agent_cli/__init__.py +++ b/booking-agent/packages/cli/src/booking_agent_cli/__init__.py @@ -1,3 +1,3 @@ """booking_agent_cli: typer-based stateful CLI for USP booking flows.""" -__version__ = "0.11.1" +__version__ = "0.11.2" diff --git a/booking-agent/packages/cli/src/booking_agent_cli/bundled_skill.md b/booking-agent/packages/cli/src/booking_agent_cli/bundled_skill.md index 53175c8..7d5f2d5 100644 --- a/booking-agent/packages/cli/src/booking_agent_cli/bundled_skill.md +++ b/booking-agent/packages/cli/src/booking_agent_cli/bundled_skill.md @@ -1,5 +1,5 @@ --- -version: 0.58.1 +version: 0.58.2 name: booking-agent description: | Books time-based services via USP from a Link wallet. Use when the user wants to book, schedule, reserve, or pay for a service from a business (haircut, lesson, repair, class, appointment, consult). The `booking-agent` CLI owns the booking state machine and refuses to proceed when human gates are skipped. Sign the user in to Link on your own, right after install and at the start of every booking (`booking-agent flow link-auth connect`, then start `booking-agent flow link-auth poll` in the background and post the sign-in URL in the same turn, exactly like `pay poll`); never wait for the user to ask to sign in or to say they approved. After `booking-agent flow business use`, follow `next_command` through `use-ucp-checkout-mode`; businesses without native checkout fail closed. Payment uses `booking-agent flow pay request` (default returns immediately with the approval URL), then start `booking-agent flow pay poll` in the background and post the approval URL to the user in the same turn; the poll finishes checkout once they approve. Confirm through `booking-agent flow book poll --wait`; never start an inbound webhook. Surface the approval URL exactly once. Personal identification (name, phone, email, address) must always come from the user's Link account via `link-cli`, never from chat or placeholders. Before any location-based search, the CLI proposes the Link shipping address and the user confirms it or gives another; online services skip this. Talk to the user in plain everyday language only; never expose CLI, UCP, auth, session, or other implementation details unless they explicitly ask. @@ -19,7 +19,7 @@ metadata: - link-cli install: - kind: uv - package: "booking-agent-cli==0.11.1" + package: "booking-agent-cli==0.11.2" bins: [booking-agent] user-invocable: true --- @@ -220,7 +220,7 @@ To take a fixed, published version instead of the latest, fetch it at the releas workflow signs it under, and check the signature before you follow it: ```bash -curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.1/booking-agent/skills/booking-agent/SKILL.md +curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.2/booking-agent/skills/booking-agent/SKILL.md gh attestation verify SKILL.md \ --repo wix/booking-agent \ --signer-workflow wix/booking-agent/.github/workflows/release.yml @@ -245,17 +245,17 @@ before installing: ```bash dir="$HOME/.booking-agent/verified-wheels" -uvx pip download "booking-agent-cli==0.11.1" --no-deps --only-binary :all: -d "$dir" +uvx pip download "booking-agent-cli==0.11.2" --no-deps --only-binary :all: -d "$dir" uvx pypi-attestations==0.0.30 verify pypi --repository https://github.com/wix/booking-agent \ - "$dir/booking_agent_cli-0.11.1-py3-none-any.whl" -uv tool install --force "$dir/booking_agent_cli-0.11.1-py3-none-any.whl" + "$dir/booking_agent_cli-0.11.2-py3-none-any.whl" +uv tool install --force "$dir/booking_agent_cli-0.11.2-py3-none-any.whl" booking-agent --help ``` Install only a wheel whose verify step passed. If `uvx` is not -available, install the same pinned release with `uv tool install booking-agent-cli==0.11.1` or -`pipx install booking-agent-cli==0.11.1`; the CLI checks its own files against the signed release +available, install the same pinned release with `uv tool install booking-agent-cli==0.11.2` or +`pipx install booking-agent-cli==0.11.2`; the CLI checks its own files against the signed release on the first `booking-agent flow init` and refuses to book or pay if they do not match. Harnesses that read this skill's `install` block do this for you. Do not go on @@ -468,7 +468,7 @@ confirmation email or on the business's page (`booking_url`). Do not invent a lo **Step 1b — Create a new session:** ```bash -booking-agent flow init --user-request "" --skill-version 0.58.1 \ +booking-agent flow init --user-request "" --skill-version 0.58.2 \ --skill-path "" ``` diff --git a/booking-agent/packages/cli/src/booking_agent_cli/updates.py b/booking-agent/packages/cli/src/booking_agent_cli/updates.py index a05d4d8..224a4de 100644 --- a/booking-agent/packages/cli/src/booking_agent_cli/updates.py +++ b/booking-agent/packages/cli/src/booking_agent_cli/updates.py @@ -220,27 +220,28 @@ def local_pair_reason(reported: Optional[str]) -> Optional[str]: def select_target(installed: str, releases: Sequence[Release]) -> Tuple[Optional[Release], List[Release]]: - """The newest release that is safe to move to, and every release that move brings in. + """The newest release that is safe to move to, and the ready releases that move brings in. - Installing a version brings every release between the installed one and it, so a - deferred release in that range holds back everything after it. + A deferred release is skipped, not a stopping point: it holds back only itself, so + a later recommended or urgent release is still offered. ``releases`` carries either + the general rollout or one replay's effective status; both are read the same way. + CLIs before 0.11.2 stop at the first deferred release, which is why the release + notes recommend every release up to 0.11.2 for each verified replay. """ current = parse_version(installed) if current is None: return None, [] target: Optional[Release] = None - passed: List[Release] = [] + brought: List[Release] = [] for release in releases: - if release.key <= current: + if release.key <= current or release.update_status == "deferred": continue - if release.update_status == "deferred": - break - passed.append(release) + brought.append(release) if release.update_status != "withdrawn": target = release if target is None: return None, [] - return target, [r for r in passed if r.key <= target.key] + return target, [r for r in brought if r.key <= target.key] def decide( diff --git a/booking-agent/packages/cli/tests/unit/test_updates.py b/booking-agent/packages/cli/tests/unit/test_updates.py index a3a655b..ed2af49 100644 --- a/booking-agent/packages/cli/tests/unit/test_updates.py +++ b/booking-agent/packages/cli/tests/unit/test_updates.py @@ -53,12 +53,64 @@ def test_replay_identity_is_generic_runtime_configuration(monkeypatch): assert updates.configured_replay() is None -def test_the_committed_index_parses(): +def _committed_releases(): index = Path(__file__).resolve().parents[4] / "release-notes" / "index.json" - releases = updates.parse_index(json.loads(index.read_text())) + return updates.parse_index(json.loads(index.read_text())) + + +def test_the_committed_index_parses(): + releases = _committed_releases() assert releases and all(updates.parse_version(r.cli_version) for r in releases) +def _verified_harnesses(): + return [h for h in release_notes.load_registry()["harnesses"].values() if h["status"] == "verified"] + + +def test_every_verified_harness_is_offered_its_approved_release(): + """From each release since the replayed one, the decision targets the registry's pin.""" + releases = _committed_releases() + for harness in _verified_harnesses(): + replayed = updates.parse_version(harness["replayed"]["cli"]) + approved = harness["recommended"]["cli"] + for start in [r.cli_version for r in releases if replayed <= r.key < updates.parse_version(approved)]: + d = updates.decide( + reported_skill=SKILL_VERSION, releases=releases, installed=start, replay_id=harness["replay"], + ) + assert d.target_version == approved, (harness["name"], start, d.target_version) + at_pin = updates.decide( + reported_skill=SKILL_VERSION, releases=releases, installed=approved, replay_id=harness["replay"], + ) + assert at_pin.target_version is None, (harness["name"], at_pin.target_version) + + +def _pre_skip_target(installed, releases): + """The walk inside CLIs before 0.11.2: it stops at the first deferred release.""" + current, target = updates.parse_version(installed), None + for release in releases: + if release.key <= current: + continue + if release.update_status == "deferred": + break + if release.update_status != "withdrawn": + target = release + return target.cli_version if target else None + + +@pytest.mark.parametrize("installed,replay", [ + ("0.7.0", None), + ("0.10.0", "grok-bot"), + ("0.10.2", "base44-superagent"), + ("0.11.1", "muse"), +]) +def test_installed_harness_clis_can_walk_to_the_first_cli_that_skips_gaps(installed, replay): + releases = _committed_releases() + if replay: + releases = updates.releases_for_replay(releases, replay) + target = _pre_skip_target(installed, releases) + assert target is not None and updates.parse_version(target) >= updates.parse_version("0.11.2"), target + + @pytest.mark.parametrize("text,ok", [ ("0.2.0", True), ("1.10.3", True), ("0.2.0.dev1", True), ("v0.2.0", False), ("0.2", False), ("latest", False), (None, False), (3, False), @@ -132,7 +184,7 @@ def test_harnesses_that_share_a_replay_promote_together(): assert first.replay == second.replay == "shared" -def test_every_deferred_release_in_a_verified_upgrade_needs_that_replay(): +def test_a_gap_does_not_hold_back_the_newest_release_a_replay_recommends(): old = _entry( "0.2.0", status="deferred", ready=False, replay_rollouts={"grok-bot": _rollout()}, @@ -142,15 +194,15 @@ def test_every_deferred_release_in_a_verified_upgrade_needs_that_replay(): "0.4.0", status="deferred", ready=False, replay_rollouts={"grok-bot": _rollout()}, ) - blocked = _decide(old, missing, newest, replay_id="grok-bot") - assert blocked.target_version == "0.2.0" + assert _decide(old, missing, newest, replay_id="grok-bot").target_version == "0.4.0" - middle = _entry( + held = _entry( "0.3.0", status="deferred", ready=False, - replay_rollouts={"grok-bot": _rollout()}, + replay_rollouts={"grok-bot": _rollout("deferred", ready=False)}, ) - promoted = _decide(old, middle, newest, replay_id="grok-bot") - assert promoted.target_version == "0.4.0" + d = _decide(old, held, newest, replay_id="grok-bot") + assert d.target_version == "0.4.0" + assert "0.3.0" not in d.user_summary def test_a_withdrawn_release_stays_withdrawn_for_a_verified_harness(): @@ -161,12 +213,22 @@ def test_a_withdrawn_release_stays_withdrawn_for_a_verified_harness(): ).reason == "installed_version_withdrawn" -def test_a_deferred_release_holds_back_every_later_one(): +def test_a_deferred_release_holds_back_only_itself(): + d = _decide( + _entry("0.2.0", "breaking", status="deferred", ready=False), + _entry("0.3.0", "fix", "urgent"), + ) + assert (d.action, d.target_version, d.change_type) == ("urgent", "0.3.0", "fix") + + +def test_a_withdrawn_release_in_a_gap_is_never_the_target(): d = _decide( _entry("0.2.0", status="deferred", ready=False), - _entry("0.3.0", status="urgent"), + _entry("0.3.0", status="withdrawn", replacement_version="0.4.0"), + _entry("0.4.0", status="recommended"), + _entry("0.5.0", status="withdrawn", replacement_version="0.5.1"), ) - assert d.action == "none" and d.target_version is None + assert d.target_version == "0.4.0" def test_the_target_is_the_newest_safe_release_and_carries_the_strongest_status(): diff --git a/booking-agent/release-notes/0.10.0.json b/booking-agent/release-notes/0.10.0.json index ab7e692..25f5f32 100644 --- a/booking-agent/release-notes/0.10.0.json +++ b/booking-agent/release-notes/0.10.0.json @@ -2,13 +2,21 @@ "change_type": "feature", "cli_version": "0.10.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.10.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not offered yet: this release teaches the assistant which harness replay a rollout belongs to. No booking, payment, or calendar behavior changed.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.10.0 ship in 0.11.2, which the replay above ran. 0.10.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not offered yet: this release teaches the assistant which harness replay a rollout belongs to. No booking, payment, or calendar behavior changed.", "Verified harnesses stay deferred on every version until an internal change records their own replay. The general status is for every harness without one.", "Offline: update decision tests cover a general recommendation staying deferred for a verified harness, a verified recommendation staying deferred for everyone else, and one replay promoting two harnesses that share it.", "Existing businesses, the registry, and saved session files are unchanged: no USP, UCP, or platform profile version changed and no request shape changed." ], + "relevant_capabilities": [], "replay_rollouts": { "base44-superagent": { "ecosystem_ready": true, @@ -30,9 +38,8 @@ "update_status": "recommended" } }, - "relevant_capabilities": [], "schema_version": 1, "skill_version": "0.57.2", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "A verified booking harness is offered an update only after its own replay passes." } diff --git a/booking-agent/release-notes/0.10.1.json b/booking-agent/release-notes/0.10.1.json index c167296..82cc91e 100644 --- a/booking-agent/release-notes/0.10.1.json +++ b/booking-agent/release-notes/0.10.1.json @@ -2,9 +2,16 @@ "change_type": "fix", "cli_version": "0.10.1", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.10.1", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: this release has not been replayed in a hosted session. A Base44 Superagent replay of 0.10.0 on 22/10/26 stopped at this defect: after a sandbox wipe that kept the saved folder, a new conversation found the saved booking waiting for the user's yes but could not show the summary again, so it abandoned the booking and started a new request. Nothing was booked or charged.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.10.1 ship in 0.11.2, which the replay above ran. 0.10.1 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: this release has not been replayed in a hosted session. A Base44 Superagent replay of 0.10.0 on 22/10/26 stopped at this defect: after a sandbox wipe that kept the saved folder, a new conversation found the saved booking waiting for the user's yes but could not show the summary again, so it abandoned the booking and started a new request. Nothing was booked or charged.", "Offline: `flow status` returns the summary step for a booking waiting for the yes, `buyer resolve` runs again from that phase and shows the same summary lines, the booking then goes through on the user's yes, and the command offered after a changed summary actually runs. The three new tests fail without the change; the full suite passes.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged: no field was added and the format version stays as it is." ], @@ -20,10 +27,18 @@ "The pay-at-appointment path that the 0.9.1 notes list as unreplayed was not run on this harness, so 0.9.1 and earlier stay deferred for Base44 Superagent." ], "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" } }, "schema_version": 1, "skill_version": "0.57.3", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "A booking that is waiting for your yes can be picked up again in a new conversation, with the same summary shown instead of starting over." } diff --git a/booking-agent/release-notes/0.10.2.json b/booking-agent/release-notes/0.10.2.json index ae0178f..b928d31 100644 --- a/booking-agent/release-notes/0.10.2.json +++ b/booking-agent/release-notes/0.10.2.json @@ -2,9 +2,16 @@ "change_type": "fix", "cli_version": "0.10.2", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.10.2", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: this release has not been replayed in a hosted session. Base44 Superagent replays of 0.10.1 on 22/10/26 stopped at two defects after a sandbox wipe that kept the saved folder: (1) the new conversation found no linked state, ran `flow init --no-persistent-root`, and started a new booking that asked for a second Link sign-in although the saved booking (waiting for the user's yes) and the sign-in were intact; (2) a rehearsal of the fix then reached the summary, and reconnecting the expired Google Calendar token sent the booking back to the calendar step, dropping the chosen time and listing times again. Nothing was booked or charged.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.10.2 ship in 0.11.2, which the replay above ran. 0.10.2 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: this release has not been replayed in a hosted session. Base44 Superagent replays of 0.10.1 on 22/10/26 stopped at two defects after a sandbox wipe that kept the saved folder: (1) the new conversation found no linked state, ran `flow init --no-persistent-root`, and started a new booking that asked for a second Link sign-in although the saved booking (waiting for the user's yes) and the sign-in were intact; (2) a rehearsal of the fix then reached the summary, and reconnecting the expired Google Calendar token sent the booking back to the calendar step, dropping the chosen time and listing times again. Nothing was booked or charged.", "Offline: `flow status`, `flow init` (with or without `--no-persistent-root`), and `runtime doctor` find an unfinished booking in a persistent folder this CLI prepared earlier and point at `runtime prepare --persistent-root `; linking that folder brings the waiting booking back at the summary step; a folder this CLI never prepared is not treated as saved state; a calendar connect or skip after the time is chosen keeps the booking where it is and points at `buyer resolve`, while the same step early in a booking still leads to availability. The tests fail without the change; the full suite passes.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged: no field was added and the format version stays as it is." ], @@ -23,10 +30,18 @@ "Earlier replays of 0.10.0 and 0.10.1 on this harness stopped at the defects 0.10.2 fixes (the saved booking could not be shown again after a restart; a calendar reconnect at the summary dropped the chosen time); nothing was booked or charged in them." ], "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" } }, "schema_version": 1, "skill_version": "0.57.4", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "After a restart, the assistant finds your saved booking and Link sign-in again, and reconnecting Google Calendar no longer makes you pick the time again." } diff --git a/booking-agent/release-notes/0.11.0.json b/booking-agent/release-notes/0.11.0.json index 1870e23..c22c4e3 100644 --- a/booking-agent/release-notes/0.11.0.json +++ b/booking-agent/release-notes/0.11.0.json @@ -2,9 +2,16 @@ "change_type": "feature", "cli_version": "0.11.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.11.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer. No verified harness has run the delegated calendar route, so no replay rollout is recorded and Grok Bot and Base44 Superagent keep their current recommended releases. Grok Bot's documented replay still expects no calendar event. The Muse session recorded below is an unverified-harness run, and it did not do the required restart after the slot was chosen, so this release stays deferred.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.11.0 ship in 0.11.2, which the replay above ran. 0.11.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer. No verified harness has run the delegated calendar route, so no replay rollout is recorded and Grok Bot and Base44 Superagent keep their current recommended releases. Grok Bot's documented replay still expects no calendar event. The Muse session recorded below is an unverified-harness run, and it did not do the required restart after the slot was chosen, so this release stays deferred.", "Not a Base44 Superagent fix: the 0.10.2 Base44 Superagent replay already connected Google Calendar with a token and posted the raw event link, so that harness keeps the connector route. The target is a harness whose platform can write calendar events itself but cannot hand a token to the CLI.", "Offline: `calendar connect --mode events --route delegated` completes the gate without a token and is refused for free/busy; availability on that route is marked as not checked against the user's calendar; a late connect at the summary keeps the chosen time; a saved delegated choice is reused without a token and is never treated as an expired one. After payment the booked message comes first, then one create request with a one-time request id; `calendar record-event` records only a report whose times match the booking (any offset), refuses incomplete, repeated, or unknown reports, and a failed report tells the user to add the event themselves. Move, cancel, and bulk cleanup hand the same kind of request to the platform, `flow status` re-issues an unreported one, and an event keeps the route it was written on. Connector and local OAuth behave as before. The full suite passes.", "Offline: `calendar connect --mode events --route delegated --delegated-can-read-busy` opts into a second kind of request for a platform that can read Google Calendar busy times itself but still cannot hand the CLI a token. `flow availability` then asks for busy intervals over its exact search window before showing any time (`calendar_delegated_busy_request`), `calendar report-busy --request-id --busy START,END` (repeatable) or `--none` records them once, and the next `flow availability` for that same window filters the returned slots and marks the calendar checked. A stale or unknown request id is refused; busy data is never reused for a different window, because busy times can change between queries. Without the flag, the route is unchanged from the rest of this release: events only, calendar marked not checked. A saved delegated choice remembers whether this was turned on.", @@ -15,8 +22,28 @@ "relevant_capabilities": [ "calendar" ], + "replay_rollouts": { + "base44-superagent": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay (base44-superagent): not run on 0.11.0. Base44 Superagent's installed CLI 0.10.2 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.2 to 0.11.2, and saved session files keep their format version.", + "The calendar change in 0.11.0 adds an opt-in delegated route; the connector and local Google sign-in routes behave as before, so Base44 Superagent keeps the calendar path its replay used." + ], + "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay (grok-bot): not run on 0.11.0. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version.", + "The calendar change in 0.11.0 adds an opt-in delegated route; the connector and local Google sign-in routes behave as before, so Grok Bot keeps the calendar path its replay used." + ], + "update_status": "recommended" + } + }, "schema_version": 1, "skill_version": "0.58.0", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "Assistants that manage Google Calendar on their own can now add, move, and remove bookings there, and some can check it for conflicts first." } diff --git a/booking-agent/release-notes/0.11.1.json b/booking-agent/release-notes/0.11.1.json index a1e44d1..5e9d245 100644 --- a/booking-agent/release-notes/0.11.1.json +++ b/booking-agent/release-notes/0.11.1.json @@ -2,17 +2,54 @@ "change_type": "fix", "cli_version": "0.11.1", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.11.1", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: this wording has not been replayed in a hosted session.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.11.1 ship in 0.11.2, which the replay above ran. 0.11.1 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer on the general rollout. Muse replayed this wording; that result is recorded under replay_rollouts and does not apply to any other harness.", "Offline: after a successful cancel, flow status keeps phase CONFIRMED and booking.status canceled, and its message says the booking is cancelled. It does not say the user is booked and it does not repeat the calendar event link. A confirmed booking that is still active still gets the booked message.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged: no field was added and the format version stays as it is." ], "relevant_capabilities": [ "cancel" ], + "replay_rollouts": { + "base44-superagent": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Base44 Superagent. Base44 Superagent's installed CLI 0.10.2 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.2 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" + }, + "muse": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay (muse): on 25/10/26 Muse installed the published CLI 0.11.1 from PyPI. The wheel signature check passed, and the wheel was kept at /home/hatch/workspace/verified-wheels/booking_agent_cli-0.11.1-py3-none-any.whl. Skill 0.58.1 was written unchanged from booking-agent skill print into /home/hatch/workspace/custom-skills/booking-agent/SKILL.md. runtime prepare --persistent-root /home/hatch/workspace linked the booking state and the Link sign-in into that folder. BOOKING_AGENT_REPLAY=muse was read from the persistent user .env. Muse does not inject that variable.", + "Hosted replay (muse): the $1 AC Repair at HVAC-Koby was selected for Mon 26 Oct 2026, 10:30-11:30 AM MST, at 3194 West Rome Street, Yuma AZ 85364. Calendar used --route delegated --delegated-can-read-busy. Muse reported 10 busy intervals from its own Google Calendar, and availability showed 14 slots after one conflict was removed. Link was already signed in. The chat stopped after the slot. The next morning the Secure VM had been replaced: boot id ba0721f8-d5a2-414b-809a-e50b1b41aa31 at the slot, then 2c487b69-16fa-4354-b279-6fb0cf4ce477, with /home/hatch/workspace kept. No Reset was used. The CLI, the skill, link-cli, the session file, and the Link sign-in were still present. flow status was SLOT_SELECTED for that same booking. There was no second search and no second Link sign-in. Asking what's going on returned that waiting recap.", + "Hosted replay (muse): the user said yes. Muse posted the business terms and, after its own safety check and a second yes to post the link, the Link approval URL once. It then noticed the approval with no further chat message. The $1.00 was charged once (booking 81d8b476-18b3-4a76-af83-8912404b277c, order 7d885f89-dddc-4f3d-8b49-854e6aef83fd). The message included You're booked and the raw Google Calendar event link. Muse created that event itself; the CLI had no calendar token. The same turn cancelled the throwaway, and the delete was reported with status deleted. flow status says the booking is cancelled, does not say the user is booked, and does not repeat the calendar link. The phase stays CONFIRMED. HVAC-Koby did not refund the $1.00.", + "Hosted replay (muse): runtime doctor reported survived_restart true, survived_restart_basis boot_id_changed, runtime_starts 6, healthy true, and no findings. The state directory is linked to /home/hatch/workspace/booking-agent.", + "Hosted replay (muse) caveat: there is no control that replaces the Secure VM. This restart was the platform's own replacement overnight. A new chat on the same boot does not count. Reset in Muse's data settings deletes the computer and must not be used.", + "Hosted replay (muse) caveat: the pay-at-appointment path was not run on this harness. The paid booking and the cancel-after-book wording were." + ], + "update_status": "recommended" + } + }, "schema_version": 1, "skill_version": "0.58.1", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "Asking how a cancelled booking is going now says that it is cancelled." } diff --git a/booking-agent/release-notes/0.11.2.json b/booking-agent/release-notes/0.11.2.json new file mode 100644 index 0000000..798b5c3 --- /dev/null +++ b/booking-agent/release-notes/0.11.2.json @@ -0,0 +1,51 @@ +{ + "change_type": "fix", + "cli_version": "0.11.2", + "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.11.2", + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "This is the release the replay above ran. It brings every change from 0.8.0 on, so installing it is what each of those releases was held back for.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer on the general rollout: no general hosted replay has run on this release. The change is offline-tested (test_updates.py): a deferred release now holds back only itself, so a later recommended release is still offered; a withdrawn release is never the target.", + "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged." + ], + "relevant_capabilities": [], + "replay_rollouts": { + "base44-superagent": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Base44 Superagent. Base44 Superagent's installed CLI 0.10.2 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.2 to 0.11.2, and saved session files keep their format version.", + "The update decision is covered offline: a deferred release holds back only itself, a withdrawn release is never the target, and from every release since this harness's replayed one the decision targets 0.11.2 (test_updates.py). The tests fail without the change." + ], + "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version.", + "The update decision is covered offline: a deferred release holds back only itself, a withdrawn release is never the target, and from every release since this harness's replayed one the decision targets 0.11.2 (test_updates.py). The tests fail without the change." + ], + "update_status": "recommended" + }, + "muse": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Muse. Muse's installed CLI 0.11.1 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.11.1 to 0.11.2, and saved session files keep their format version.", + "The update decision is covered offline: a deferred release holds back only itself, a withdrawn release is never the target, and from every release since this harness's replayed one the decision targets 0.11.2 (test_updates.py). The tests fail without the change." + ], + "update_status": "recommended" + } + }, + "schema_version": 1, + "skill_version": "0.58.2", + "update_status": "recommended", + "user_summary": "Update checks now offer the newest ready release even when an earlier release is still held back." +} diff --git a/booking-agent/release-notes/0.8.0.json b/booking-agent/release-notes/0.8.0.json index 83c4bf0..d6be667 100644 --- a/booking-agent/release-notes/0.8.0.json +++ b/booking-agent/release-notes/0.8.0.json @@ -2,9 +2,16 @@ "change_type": "feature", "cli_version": "0.8.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.8.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: no hosted replay against a live Wix site that declares pay-at-service has been run, and the business side was reported ready (merged and green) but not yet generally available when this was written.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.8.0 ship in 0.11.2, which the replay above ran. 0.8.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: no hosted replay against a live Wix site that declares pay-at-service has been run, and the business side was reported ready (merged and green) but not yet generally available when this was written.", "Offline: the full test suite passes, including new loopback end-to-end tests for a business that declares the pay-at-service extension (checkout, disclosure shown first, completion with an empty payment, no Link payment) and for one that does not (booking stays direct).", "Existing businesses stay compatible: a service paid at the appointment is booked through a checkout only when the business declares the extension; otherwise the direct booking path is unchanged. Paid, deposit and free bookings are untouched.", "The saved booking file keeps format 2 and gains no required field; a session saved by 0.7.0 resumes unchanged." @@ -15,6 +22,6 @@ ], "schema_version": 1, "skill_version": "0.56.0", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "Bookings paid at the appointment can now go through the business's checkout, so you get an order record while nothing is charged until you arrive." } diff --git a/booking-agent/release-notes/0.9.0.json b/booking-agent/release-notes/0.9.0.json index 2d904d2..a0c6db0 100644 --- a/booking-agent/release-notes/0.9.0.json +++ b/booking-agent/release-notes/0.9.0.json @@ -2,15 +2,29 @@ "change_type": "breaking", "cli_version": "0.9.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.9.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: the support ingest that receives automatic fault reports must be redeployed and smoke-tested first, and no hosted session has run this version yet.", - "Hosted replay: not run. Sign-in (the Link approval link is now always shown before polling), calendar (connect or skip only after the calendar question), and payment (policies accepted before paying, pay-at-service completed in two steps) changed and need one throwaway hosted booking before rollout.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.9.0 ship in 0.11.2, which the replay above ran. 0.9.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: the support ingest that receives automatic fault reports must be redeployed and smoke-tested first, and no hosted session has run this version yet.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Hosted replay: not run. Sign-in (the Link approval link is now always shown before polling), calendar (connect or skip only after the calendar question), and payment (policies accepted before paying, pay-at-service completed in two steps) changed and need one throwaway hosted booking before rollout.", "Breaking for a mismatched skill: a booking now needs the user's yes on the summary (and on the business's policies when it sent any) through new flags, so a 0.56.0 skill driving this CLI stops at the new gates with recoverable errors. The bundled skill 0.57.0 matches.", "Offline: the full test suite passes, including loopback end-to-end runs where checkout terms and privacy links block payment until accepted, and replays of the AC repair transcript that motivated the gates.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed; results whose profile cannot be resolved are now dropped client-side.", "The saved booking file keeps its format version and gains only optional fields; a session saved by 0.8.0 resumes, and the new confirmations are asked again where needed." ], + "relevant_capabilities": [ + "search", + "sign_in", + "calendar", + "booking", + "payment" + ], "replay_rollouts": { "grok-bot": { "ecosystem_ready": true, @@ -22,15 +36,8 @@ "update_status": "recommended" } }, - "relevant_capabilities": [ - "search", - "sign_in", - "calendar", - "booking", - "payment" - ], "schema_version": 1, "skill_version": "0.57.0", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "The assistant now shows you the booking summary and the business's policies and waits for your yes before anything is booked or paid." } diff --git a/booking-agent/release-notes/0.9.1.json b/booking-agent/release-notes/0.9.1.json index b3c2238..4398cfa 100644 --- a/booking-agent/release-notes/0.9.1.json +++ b/booking-agent/release-notes/0.9.1.json @@ -2,15 +2,27 @@ "change_type": "fix", "cli_version": "0.9.1", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.9.1", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: no hosted session has run this version yet, and 0.9.0 is deferred, so installing this one brings 0.9.0's changes with it.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.9.1 ship in 0.11.2, which the replay above ran. 0.9.1 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: no hosted session has run this version yet, and 0.9.0 is deferred, so installing this one brings 0.9.0's changes with it.", "Hosted replay: 0.9.0 failed on 21/10/26 in two hosted sessions (a new conversation did not resume a booking waiting for the user's yes: the user's reply was taken as consent to a support note, and times were listed again, dropping the chosen slot and summary; the calendar was skipped without asking, so no event link could be shown). This release fixes those in the CLI and has not been replayed yet.", "Hosted replay: a live pay-at-appointment business answers checkout completion with an order and a booking that is still pending, then confirms it about 20 seconds later; canceling an open checkout returns no booking and leaves the booking pending. This release waits for that confirmation without reporting a charge, and stops after a booking-less checkout cancellation instead of canceling the booking through USP. Neither path has been replayed against the live business yet.", "Offline: the full test suite passes, including new tests for a booking waiting at the summary with a stale support note, listing times again after a time is chosen, a new runtime that must read the booking state first, the calendar skip reason shown in the booked message, a pay-at-appointment booking confirmed after checkout completion (and the timeout and decline paths), and a canceled checkout that returns no booking.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed.", "The saved booking file keeps its format version and gains two optional fields (calendar skipped without asking, and ucp_checkout_abandoned for a canceled checkout); a session saved by 0.9.0 resumes unchanged." ], + "relevant_capabilities": [ + "booking", + "calendar", + "payment" + ], "replay_rollouts": { "grok-bot": { "ecosystem_ready": true, @@ -22,13 +34,8 @@ "update_status": "recommended" } }, - "relevant_capabilities": [ - "booking", - "calendar", - "payment" - ], "schema_version": 1, "skill_version": "0.57.1", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "A booking that is waiting for your yes now picks up where it stopped after a restart, and you are told when no calendar event could be added." } diff --git a/booking-agent/release-notes/index.json b/booking-agent/release-notes/index.json index b357a0b..81f0dfc 100644 --- a/booking-agent/release-notes/index.json +++ b/booking-agent/release-notes/index.json @@ -182,9 +182,16 @@ "change_type": "feature", "cli_version": "0.8.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.8.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: no hosted replay against a live Wix site that declares pay-at-service has been run, and the business side was reported ready (merged and green) but not yet generally available when this was written.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.8.0 ship in 0.11.2, which the replay above ran. 0.8.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: no hosted replay against a live Wix site that declares pay-at-service has been run, and the business side was reported ready (merged and green) but not yet generally available when this was written.", "Offline: the full test suite passes, including new loopback end-to-end tests for a business that declares the pay-at-service extension (checkout, disclosure shown first, completion with an empty payment, no Link payment) and for one that does not (booking stays direct).", "Existing businesses stay compatible: a service paid at the appointment is booked through a checkout only when the business declares the extension; otherwise the direct booking path is unchanged. Paid, deposit and free bookings are untouched.", "The saved booking file keeps format 2 and gains no required field; a session saved by 0.7.0 resumes unchanged." @@ -195,17 +202,24 @@ ], "schema_version": 1, "skill_version": "0.56.0", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "Bookings paid at the appointment can now go through the business's checkout, so you get an order record while nothing is charged until you arrive." }, { "change_type": "breaking", "cli_version": "0.9.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.9.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: the support ingest that receives automatic fault reports must be redeployed and smoke-tested first, and no hosted session has run this version yet.", - "Hosted replay: not run. Sign-in (the Link approval link is now always shown before polling), calendar (connect or skip only after the calendar question), and payment (policies accepted before paying, pay-at-service completed in two steps) changed and need one throwaway hosted booking before rollout.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.9.0 ship in 0.11.2, which the replay above ran. 0.9.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: the support ingest that receives automatic fault reports must be redeployed and smoke-tested first, and no hosted session has run this version yet.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Hosted replay: not run. Sign-in (the Link approval link is now always shown before polling), calendar (connect or skip only after the calendar question), and payment (policies accepted before paying, pay-at-service completed in two steps) changed and need one throwaway hosted booking before rollout.", "Breaking for a mismatched skill: a booking now needs the user's yes on the summary (and on the business's policies when it sent any) through new flags, so a 0.56.0 skill driving this CLI stops at the new gates with recoverable errors. The bundled skill 0.57.0 matches.", "Offline: the full test suite passes, including loopback end-to-end runs where checkout terms and privacy links block payment until accepted, and replays of the AC repair transcript that motivated the gates.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed; results whose profile cannot be resolved are now dropped client-side.", @@ -231,16 +245,23 @@ }, "schema_version": 1, "skill_version": "0.57.0", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "The assistant now shows you the booking summary and the business's policies and waits for your yes before anything is booked or paid." }, { "change_type": "fix", "cli_version": "0.9.1", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.9.1", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: no hosted session has run this version yet, and 0.9.0 is deferred, so installing this one brings 0.9.0's changes with it.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.9.1 ship in 0.11.2, which the replay above ran. 0.9.1 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: no hosted session has run this version yet, and 0.9.0 is deferred, so installing this one brings 0.9.0's changes with it.", "Hosted replay: 0.9.0 failed on 21/10/26 in two hosted sessions (a new conversation did not resume a booking waiting for the user's yes: the user's reply was taken as consent to a support note, and times were listed again, dropping the chosen slot and summary; the calendar was skipped without asking, so no event link could be shown). This release fixes those in the CLI and has not been replayed yet.", "Hosted replay: a live pay-at-appointment business answers checkout completion with an order and a booking that is still pending, then confirms it about 20 seconds later; canceling an open checkout returns no booking and leaves the booking pending. This release waits for that confirmation without reporting a charge, and stops after a booking-less checkout cancellation instead of canceling the booking through USP. Neither path has been replayed against the live business yet.", "Offline: the full test suite passes, including new tests for a booking waiting at the summary with a stale support note, listing times again after a time is chosen, a new runtime that must read the booking state first, the calendar skip reason shown in the booked message, a pay-at-appointment booking confirmed after checkout completion (and the timeout and decline paths), and a canceled checkout that returns no booking.", @@ -265,16 +286,23 @@ }, "schema_version": 1, "skill_version": "0.57.1", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "A booking that is waiting for your yes now picks up where it stopped after a restart, and you are told when no calendar event could be added." }, { "change_type": "feature", "cli_version": "0.10.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.10.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not offered yet: this release teaches the assistant which harness replay a rollout belongs to. No booking, payment, or calendar behavior changed.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.10.0 ship in 0.11.2, which the replay above ran. 0.10.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not offered yet: this release teaches the assistant which harness replay a rollout belongs to. No booking, payment, or calendar behavior changed.", "Verified harnesses stay deferred on every version until an internal change records their own replay. The general status is for every harness without one.", "Offline: update decision tests cover a general recommendation staying deferred for a verified harness, a verified recommendation staying deferred for everyone else, and one replay promoting two harnesses that share it.", "Existing businesses, the registry, and saved session files are unchanged: no USP, UCP, or platform profile version changed and no request shape changed." @@ -303,16 +331,23 @@ }, "schema_version": 1, "skill_version": "0.57.2", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "A verified booking harness is offered an update only after its own replay passes." }, { "change_type": "fix", "cli_version": "0.10.1", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.10.1", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: this release has not been replayed in a hosted session. A Base44 Superagent replay of 0.10.0 on 22/10/26 stopped at this defect: after a sandbox wipe that kept the saved folder, a new conversation found the saved booking waiting for the user's yes but could not show the summary again, so it abandoned the booking and started a new request. Nothing was booked or charged.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.10.1 ship in 0.11.2, which the replay above ran. 0.10.1 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: this release has not been replayed in a hosted session. A Base44 Superagent replay of 0.10.0 on 22/10/26 stopped at this defect: after a sandbox wipe that kept the saved folder, a new conversation found the saved booking waiting for the user's yes but could not show the summary again, so it abandoned the booking and started a new request. Nothing was booked or charged.", "Offline: `flow status` returns the summary step for a booking waiting for the yes, `buyer resolve` runs again from that phase and shows the same summary lines, the booking then goes through on the user's yes, and the command offered after a changed summary actually runs. The three new tests fail without the change; the full suite passes.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged: no field was added and the format version stays as it is." ], @@ -328,20 +363,35 @@ "The pay-at-appointment path that the 0.9.1 notes list as unreplayed was not run on this harness, so 0.9.1 and earlier stay deferred for Base44 Superagent." ], "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" } }, "schema_version": 1, "skill_version": "0.57.3", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "A booking that is waiting for your yes can be picked up again in a new conversation, with the same summary shown instead of starting over." }, { "change_type": "fix", "cli_version": "0.10.2", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.10.2", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: this release has not been replayed in a hosted session. Base44 Superagent replays of 0.10.1 on 22/10/26 stopped at two defects after a sandbox wipe that kept the saved folder: (1) the new conversation found no linked state, ran `flow init --no-persistent-root`, and started a new booking that asked for a second Link sign-in although the saved booking (waiting for the user's yes) and the sign-in were intact; (2) a rehearsal of the fix then reached the summary, and reconnecting the expired Google Calendar token sent the booking back to the calendar step, dropping the chosen time and listing times again. Nothing was booked or charged.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.10.2 ship in 0.11.2, which the replay above ran. 0.10.2 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer: this release has not been replayed in a hosted session. Base44 Superagent replays of 0.10.1 on 22/10/26 stopped at two defects after a sandbox wipe that kept the saved folder: (1) the new conversation found no linked state, ran `flow init --no-persistent-root`, and started a new booking that asked for a second Link sign-in although the saved booking (waiting for the user's yes) and the sign-in were intact; (2) a rehearsal of the fix then reached the summary, and reconnecting the expired Google Calendar token sent the booking back to the calendar step, dropping the chosen time and listing times again. Nothing was booked or charged.", "Offline: `flow status`, `flow init` (with or without `--no-persistent-root`), and `runtime doctor` find an unfinished booking in a persistent folder this CLI prepared earlier and point at `runtime prepare --persistent-root `; linking that folder brings the waiting booking back at the summary step; a folder this CLI never prepared is not treated as saved state; a calendar connect or skip after the time is chosen keeps the booking where it is and points at `buyer resolve`, while the same step early in a booking still leads to availability. The tests fail without the change; the full suite passes.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged: no field was added and the format version stays as it is." ], @@ -360,20 +410,35 @@ "Earlier replays of 0.10.0 and 0.10.1 on this harness stopped at the defects 0.10.2 fixes (the saved booking could not be shown again after a restart; a calendar reconnect at the summary dropped the chosen time); nothing was booked or charged in them." ], "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" } }, "schema_version": 1, "skill_version": "0.57.4", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "After a restart, the assistant finds your saved booking and Link sign-in again, and reconnecting Google Calendar no longer makes you pick the time again." }, { "change_type": "feature", "cli_version": "0.11.0", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.11.0", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer. No verified harness has run the delegated calendar route, so no replay rollout is recorded and Grok Bot and Base44 Superagent keep their current recommended releases. Grok Bot's documented replay still expects no calendar event. The Muse session recorded below is an unverified-harness run, and it did not do the required restart after the slot was chosen, so this release stays deferred.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.11.0 ship in 0.11.2, which the replay above ran. 0.11.0 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer. No verified harness has run the delegated calendar route, so no replay rollout is recorded and Grok Bot and Base44 Superagent keep their current recommended releases. Grok Bot's documented replay still expects no calendar event. The Muse session recorded below is an unverified-harness run, and it did not do the required restart after the slot was chosen, so this release stays deferred.", "Not a Base44 Superagent fix: the 0.10.2 Base44 Superagent replay already connected Google Calendar with a token and posted the raw event link, so that harness keeps the connector route. The target is a harness whose platform can write calendar events itself but cannot hand a token to the CLI.", "Offline: `calendar connect --mode events --route delegated` completes the gate without a token and is refused for free/busy; availability on that route is marked as not checked against the user's calendar; a late connect at the summary keeps the chosen time; a saved delegated choice is reused without a token and is never treated as an expired one. After payment the booked message comes first, then one create request with a one-time request id; `calendar record-event` records only a report whose times match the booking (any offset), refuses incomplete, repeated, or unknown reports, and a failed report tells the user to add the event themselves. Move, cancel, and bulk cleanup hand the same kind of request to the platform, `flow status` re-issues an unreported one, and an event keeps the route it was written on. Connector and local OAuth behave as before. The full suite passes.", "Offline: `calendar connect --mode events --route delegated --delegated-can-read-busy` opts into a second kind of request for a platform that can read Google Calendar busy times itself but still cannot hand the CLI a token. `flow availability` then asks for busy intervals over its exact search window before showing any time (`calendar_delegated_busy_request`), `calendar report-busy --request-id --busy START,END` (repeatable) or `--none` records them once, and the next `flow availability` for that same window filters the returned slots and marks the calendar checked. A stale or unknown request id is refused; busy data is never reused for a different window, because busy times can change between queries. Without the flag, the route is unchanged from the rest of this release: events only, calendar marked not checked. A saved delegated choice remembers whether this was turned on.", @@ -384,28 +449,136 @@ "relevant_capabilities": [ "calendar" ], + "replay_rollouts": { + "base44-superagent": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay (base44-superagent): not run on 0.11.0. Base44 Superagent's installed CLI 0.10.2 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.2 to 0.11.2, and saved session files keep their format version.", + "The calendar change in 0.11.0 adds an opt-in delegated route; the connector and local Google sign-in routes behave as before, so Base44 Superagent keeps the calendar path its replay used." + ], + "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay (grok-bot): not run on 0.11.0. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version.", + "The calendar change in 0.11.0 adds an opt-in delegated route; the connector and local Google sign-in routes behave as before, so Grok Bot keeps the calendar path its replay used." + ], + "update_status": "recommended" + } + }, "schema_version": 1, "skill_version": "0.58.0", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "Assistants that manage Google Calendar on their own can now add, move, and remove bookings there, and some can check it for conflicts first." }, { "change_type": "fix", "cli_version": "0.11.1", "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.11.1", - "ecosystem_ready": false, + "ecosystem_ready": true, "readiness_evidence": [ - "Not ready to offer: this wording has not been replayed in a hosted session.", + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "The changes in 0.11.1 ship in 0.11.2, which the replay above ran. 0.11.1 is recommended so CLIs before 0.11.2, which stop at the first deferred release, can reach 0.11.2.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer on the general rollout. Muse replayed this wording; that result is recorded under replay_rollouts and does not apply to any other harness.", "Offline: after a successful cancel, flow status keeps phase CONFIRMED and booking.status canceled, and its message says the booking is cancelled. It does not say the user is booked and it does not repeat the calendar event link. A confirmed booking that is still active still gets the booked message.", "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged: no field was added and the format version stays as it is." ], "relevant_capabilities": [ "cancel" ], + "replay_rollouts": { + "base44-superagent": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Base44 Superagent. Base44 Superagent's installed CLI 0.10.2 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.2 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version." + ], + "update_status": "recommended" + }, + "muse": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay (muse): on 25/10/26 Muse installed the published CLI 0.11.1 from PyPI. The wheel signature check passed, and the wheel was kept at /home/hatch/workspace/verified-wheels/booking_agent_cli-0.11.1-py3-none-any.whl. Skill 0.58.1 was written unchanged from booking-agent skill print into /home/hatch/workspace/custom-skills/booking-agent/SKILL.md. runtime prepare --persistent-root /home/hatch/workspace linked the booking state and the Link sign-in into that folder. BOOKING_AGENT_REPLAY=muse was read from the persistent user .env. Muse does not inject that variable.", + "Hosted replay (muse): the $1 AC Repair at HVAC-Koby was selected for Mon 26 Oct 2026, 10:30-11:30 AM MST, at 3194 West Rome Street, Yuma AZ 85364. Calendar used --route delegated --delegated-can-read-busy. Muse reported 10 busy intervals from its own Google Calendar, and availability showed 14 slots after one conflict was removed. Link was already signed in. The chat stopped after the slot. The next morning the Secure VM had been replaced: boot id ba0721f8-d5a2-414b-809a-e50b1b41aa31 at the slot, then 2c487b69-16fa-4354-b279-6fb0cf4ce477, with /home/hatch/workspace kept. No Reset was used. The CLI, the skill, link-cli, the session file, and the Link sign-in were still present. flow status was SLOT_SELECTED for that same booking. There was no second search and no second Link sign-in. Asking what's going on returned that waiting recap.", + "Hosted replay (muse): the user said yes. Muse posted the business terms and, after its own safety check and a second yes to post the link, the Link approval URL once. It then noticed the approval with no further chat message. The $1.00 was charged once (booking 81d8b476-18b3-4a76-af83-8912404b277c, order 7d885f89-dddc-4f3d-8b49-854e6aef83fd). The message included You're booked and the raw Google Calendar event link. Muse created that event itself; the CLI had no calendar token. The same turn cancelled the throwaway, and the delete was reported with status deleted. flow status says the booking is cancelled, does not say the user is booked, and does not repeat the calendar link. The phase stays CONFIRMED. HVAC-Koby did not refund the $1.00.", + "Hosted replay (muse): runtime doctor reported survived_restart true, survived_restart_basis boot_id_changed, runtime_starts 6, healthy true, and no findings. The state directory is linked to /home/hatch/workspace/booking-agent.", + "Hosted replay (muse) caveat: there is no control that replaces the Secure VM. This restart was the platform's own replacement overnight. A new chat on the same boot does not count. Reset in Muse's data settings deletes the computer and must not be used.", + "Hosted replay (muse) caveat: the pay-at-appointment path was not run on this harness. The paid booking and the cancel-after-book wording were." + ], + "update_status": "recommended" + } + }, "schema_version": 1, "skill_version": "0.58.1", - "update_status": "deferred", + "update_status": "recommended", "user_summary": "Asking how a cancelled booking is going now says that it is cancelled." + }, + { + "change_type": "fix", + "cli_version": "0.11.2", + "details_url": "https://github.com/wix/booking-agent/releases/tag/v0.11.2", + "ecosystem_ready": true, + "readiness_evidence": [ + "Hosted replay: on 25/10/26 an unverified harness (Cursor on macOS, BOOKING_AGENT_REPLAY unset, so the general rollout) ran CLI 0.11.2 with skill 0.58.2, installed from the release commit's source folder before publication, so the signed-release check on the first flow init was not exercised. The skill was loaded unchanged from booking-agent skill print. Booking 1 was the $1 AC Repair at HVAC-Koby for Tue 27 Oct 2026, 10:00-11:00 AM MST, at 3194 West Rome Street, Yuma AZ 85364. The saved Google Calendar connection had expired; the user reconnected it through the local sign-in in events mode, and availability found no conflicts. After the slot was chosen the conversation was replaced by a new Cursor chat. Asked \"what's going on with my booking?\", it resumed that booking at the summary with no second search, no second Link sign-in, and no reconnect request.", + "Hosted replay: the user said yes; \"Booking it now.\" came at once, the Link approval URL was posted once, and the chat noticed the approval with no further message. $1.00 was charged once (booking fa63d017-8967-40b6-8349-fb082996141d, order 80643a06-726b-4f28-918d-e2ef9701c54b). The booked message included the raw Google Calendar event link, and flow status then returned the same message.", + "Hosted replay: booking 2 started signed out of Link (flow logout first). flow init sent the assistant to the Link sign-in before any question, the sign-in URL was posted once, and the booking continued when the background poll saw the approval. Google Calendar was connected again through the local sign-in, and availability removed 4 slots that conflicted with the calendar, including booking 1. The $2 AC Diagnostic & Inspection at HVAC-Koby, paid at the appointment, for Tue 27 Oct, 11:00-11:45 AM MST, showed the recap with \"$2.00, paid to the business at the appointment (nothing is charged now)\". flow book stopped for the business's payment terms and terms-of-service link; after the user accepted them, checkout completed with no Link payment and nothing charged (booking 08a23ee3-e216-4e7d-8cd9-06ea40d4c011, order c7a3b6c4-36fa-4532-9c31-f2bff8090226). The booked message included the calendar link and \"Nothing was charged. Full price, due at your appointment.\"", + "Hosted replay: both throwaway bookings were then cancelled, and both calendar events were reported deleted. HVAC-Koby did not refund the $1.00; the message gave the refund steps with the booking and order references. flow status on the paid booking said it is cancelled and did not say the user is booked. runtime doctor reported healthy true with one info finding, not_persistent, because ~/.booking-agent on this Mac is not linked to a declared persistent folder.", + "Hosted replay caveat: the restart was a new conversation on the same machine and filesystem, not a fresh sandbox, so surviving a wiped runtime was not shown on the general rollout. Not run: the connector and delegated calendar routes (Muse ran the delegated route on 0.11.1), a deposit, and bank verification.", + "The release owner confirmed on 25/10/26 that the fault-report support service has been redeployed and smoke-tested and that pay-at-appointment is generally available on the business side.", + "This is the release the replay above ran. It brings every change from 0.8.0 on, so installing it is what each of those releases was held back for.", + "Held back until the general replay of 0.11.2 on 25/10/26. Earlier note: Not ready to offer on the general rollout: no general hosted replay has run on this release. The change is offline-tested (test_updates.py): a deferred release now holds back only itself, so a later recommended release is still offered; a withdrawn release is never the target.", + "Existing businesses and the registry stay compatible: no USP, UCP, or platform profile version changed and no request shape changed. Saved session files are unchanged." + ], + "relevant_capabilities": [], + "replay_rollouts": { + "base44-superagent": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Base44 Superagent. Base44 Superagent's installed CLI 0.10.2 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.2 to 0.11.2, and saved session files keep their format version.", + "The update decision is covered offline: a deferred release holds back only itself, a withdrawn release is never the target, and from every release since this harness's replayed one the decision targets 0.11.2 (test_updates.py). The tests fail without the change." + ], + "update_status": "recommended" + }, + "grok-bot": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Grok Bot. Grok Bot's installed CLI 0.10.0 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.10.0 to 0.11.2, and saved session files keep their format version.", + "The update decision is covered offline: a deferred release holds back only itself, a withdrawn release is never the target, and from every release since this harness's replayed one the decision targets 0.11.2 (test_updates.py). The tests fail without the change." + ], + "update_status": "recommended" + }, + "muse": { + "ecosystem_ready": true, + "readiness_evidence": [ + "Not replayed on Muse. Muse's installed CLI 0.11.1 stops its update walk at the first release with no recommended record for this replay, so without this record it is never offered 0.11.2, the first release that skips a held-back release instead of stopping at it. This record exists only so that walk reaches 0.11.2.", + "Existing businesses, the registry, and saved session files stay compatible: no USP, UCP, or platform profile version changed in any release from 0.11.1 to 0.11.2, and saved session files keep their format version.", + "The update decision is covered offline: a deferred release holds back only itself, a withdrawn release is never the target, and from every release since this harness's replayed one the decision targets 0.11.2 (test_updates.py). The tests fail without the change." + ], + "update_status": "recommended" + } + }, + "schema_version": 1, + "skill_version": "0.58.2", + "update_status": "recommended", + "user_summary": "Update checks now offer the newest ready release even when an earlier release is still held back." } ], "schema_version": 1 diff --git a/booking-agent/skills/booking-agent/SKILL.md b/booking-agent/skills/booking-agent/SKILL.md index 53175c8..7d5f2d5 100644 --- a/booking-agent/skills/booking-agent/SKILL.md +++ b/booking-agent/skills/booking-agent/SKILL.md @@ -1,5 +1,5 @@ --- -version: 0.58.1 +version: 0.58.2 name: booking-agent description: | Books time-based services via USP from a Link wallet. Use when the user wants to book, schedule, reserve, or pay for a service from a business (haircut, lesson, repair, class, appointment, consult). The `booking-agent` CLI owns the booking state machine and refuses to proceed when human gates are skipped. Sign the user in to Link on your own, right after install and at the start of every booking (`booking-agent flow link-auth connect`, then start `booking-agent flow link-auth poll` in the background and post the sign-in URL in the same turn, exactly like `pay poll`); never wait for the user to ask to sign in or to say they approved. After `booking-agent flow business use`, follow `next_command` through `use-ucp-checkout-mode`; businesses without native checkout fail closed. Payment uses `booking-agent flow pay request` (default returns immediately with the approval URL), then start `booking-agent flow pay poll` in the background and post the approval URL to the user in the same turn; the poll finishes checkout once they approve. Confirm through `booking-agent flow book poll --wait`; never start an inbound webhook. Surface the approval URL exactly once. Personal identification (name, phone, email, address) must always come from the user's Link account via `link-cli`, never from chat or placeholders. Before any location-based search, the CLI proposes the Link shipping address and the user confirms it or gives another; online services skip this. Talk to the user in plain everyday language only; never expose CLI, UCP, auth, session, or other implementation details unless they explicitly ask. @@ -19,7 +19,7 @@ metadata: - link-cli install: - kind: uv - package: "booking-agent-cli==0.11.1" + package: "booking-agent-cli==0.11.2" bins: [booking-agent] user-invocable: true --- @@ -220,7 +220,7 @@ To take a fixed, published version instead of the latest, fetch it at the releas workflow signs it under, and check the signature before you follow it: ```bash -curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.1/booking-agent/skills/booking-agent/SKILL.md +curl -fsSLO https://raw.githubusercontent.com/wix/booking-agent/skill-v0.58.2/booking-agent/skills/booking-agent/SKILL.md gh attestation verify SKILL.md \ --repo wix/booking-agent \ --signer-workflow wix/booking-agent/.github/workflows/release.yml @@ -245,17 +245,17 @@ before installing: ```bash dir="$HOME/.booking-agent/verified-wheels" -uvx pip download "booking-agent-cli==0.11.1" --no-deps --only-binary :all: -d "$dir" +uvx pip download "booking-agent-cli==0.11.2" --no-deps --only-binary :all: -d "$dir" uvx pypi-attestations==0.0.30 verify pypi --repository https://github.com/wix/booking-agent \ - "$dir/booking_agent_cli-0.11.1-py3-none-any.whl" -uv tool install --force "$dir/booking_agent_cli-0.11.1-py3-none-any.whl" + "$dir/booking_agent_cli-0.11.2-py3-none-any.whl" +uv tool install --force "$dir/booking_agent_cli-0.11.2-py3-none-any.whl" booking-agent --help ``` Install only a wheel whose verify step passed. If `uvx` is not -available, install the same pinned release with `uv tool install booking-agent-cli==0.11.1` or -`pipx install booking-agent-cli==0.11.1`; the CLI checks its own files against the signed release +available, install the same pinned release with `uv tool install booking-agent-cli==0.11.2` or +`pipx install booking-agent-cli==0.11.2`; the CLI checks its own files against the signed release on the first `booking-agent flow init` and refuses to book or pay if they do not match. Harnesses that read this skill's `install` block do this for you. Do not go on @@ -468,7 +468,7 @@ confirmation email or on the business's page (`booking_url`). Do not invent a lo **Step 1b — Create a new session:** ```bash -booking-agent flow init --user-request "" --skill-version 0.58.1 \ +booking-agent flow init --user-request "" --skill-version 0.58.2 \ --skill-path "" ``` diff --git a/booking-agent/uv.lock b/booking-agent/uv.lock index ad9e835..4f1dbee 100644 --- a/booking-agent/uv.lock +++ b/booking-agent/uv.lock @@ -69,7 +69,7 @@ wheels = [ [[package]] name = "booking-agent-cli" -version = "0.11.1" +version = "0.11.2" source = { editable = "packages/cli" } dependencies = [ { name = "click" },