toga-ai 1.0.647 → 1.0.649

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -139,11 +139,20 @@ drawer; focus moves into the composer on open and is restored to the opener on c
139
139
 
140
140
  ## Gotchas
141
141
 
142
- - **`api.togaiq.com` chat endpoints are origin/UA-gated.** `localhost:3000`,
143
- `bdr.dev.sandbox.togatech.com`, and the eventual production domain **must be
144
- allowlisted by the Talos backend owner**. Until they are, the drawer silently answers
145
- from the scripted fallback and looks like it works. Check for suggestion chips before
146
- concluding the backend is live.
142
+ - **`api.togaiq.com` chat endpoints are origin/UA-gated — verified 2026-08-25 with
143
+ browser-shaped `curl` probes:** from origin `http://localhost:3000` the whole flow
144
+ works end-to-end (token minted, real Sonnet reply with `suggestions`/`cta`/
145
+ `cited_slides`), so **local dev gets live answers**. From origin
146
+ `https://bdr.dev.sandbox.togatech.com` the session mint returns **`403 Forbidden`**
147
+ — the sandbox origin is **not allowlisted**, so the deployed drawer silently answers
148
+ from the scripted fallback and looks like it works. The eventual production domain
149
+ will need the same. **Fix = the Talos backend owner adds the origin to the
150
+ talos-chat allowlist (aegra-api); no BDR change.** CORS is not the problem
151
+ (preflight returns `access-control-allow-origin: *` with `authorization,content-type`
152
+ allowed; one 502 on a preflight was transient). Diagnose from the browser console:
153
+ `talos-chat unavailable, using scripted fallback: session mint failed: 403` = origin
154
+ not allowlisted; `...: Failed to fetch` = a CORS/preflight failure. Check for
155
+ suggestion chips before concluding the backend is live.
147
156
  - **Do not "fix" the transcript by sending the visible message list.** The greeting and
148
157
  any merged/trimmed turns would break the strict alternating shape and return a 422.
149
158
  - **The chat is fully client-side**, which is why `/landing` still builds as a
@@ -163,6 +172,10 @@ drawer; focus moves into the composer on open and is restored to the opener on c
163
172
  the developer's branch/commit go-ahead.
164
173
 
165
174
  ## Change history
175
+ - 2026-08-25 — Verified the origin gate with browser-shaped probes: `localhost:3000` is
176
+ allowed and returns live replies end-to-end; `bdr.dev.sandbox.togatech.com` gets 403 at
177
+ session mint (not allowlisted → deployed drawer runs on scripted fallback). Recorded the
178
+ console-message → cause mapping. (tcox)
166
179
  - 2026-08-24 — Initial doc. BUILT the `/landing` Talos chat drawer wired to the real
167
180
  campaign-chat backend: `ChatPanel.tsx` (right-anchored drawer ported from the security
168
181
  mockup), `lib/talosChat.ts` (fingerprint + 15-min session token + message-shape
@@ -136,9 +136,19 @@ does not define or defines differently.
136
136
  - **"Book your free risk assessment"** is a real `<a class="btn btn-toga btn-lg">` to
137
137
  `https://calendly.com/toga-technology/risk-assessment` (`target="_blank"`,
138
138
  `rel="noopener noreferrer"`), sourced from `security.ts` `primaryCtaHref`.
139
- **CAVEAT: that URL is a placeholder carried over from the mockup** (the mockup's own
140
- comment says "replace with the real TOGA Calendly link") and the slug's liveness has
141
- **not** been verified. Confirm it before pointing traffic at the page.
139
+ **VERIFIED DEAD (2026-08-25): that URL 404s, and so does `calendly.com/toga-technology`
140
+ — TOGA has no Calendly presence at all.** It was a placeholder carried over from the
141
+ mockup. TOGA's real booking system is **Cal.com**, team slug `toga-technology`
142
+ (`https://cal.com/team/toga-technology`, the same team worker2's `BOOK_CALCOM_MEETING`
143
+ books into via `[calcom] team_slug`). As of 2026-08-25 the team exposes **exactly one
144
+ event type, `discovery-call`**, titled *"Healthcare AI Discovery Call"* — and both prod
145
+ AI-BDR campaigns (`Client_True.Campaigns.c_meetingType`) use it. **No cybersecurity /
146
+ risk-assessment event type exists anywhere.** Before pointing traffic at the page, the
147
+ Cal.com owner must create one (e.g. an "External Risk Assessment" event on the team →
148
+ `https://cal.com/team/toga-technology/<slug>`), then set `primaryCtaHref` in
149
+ `security.ts` AND pass the same URL as `cta_url` on the campaign ingest so the chat's
150
+ `book_call` CTA resolves (the live campaign's `cta` is currently `null`). Interim
151
+ option: point at `discovery-call`, accepting the "Healthcare AI" title mismatch.
142
152
  - **"Learn more"** and the header CTA (**"Ask Alex Anything"** — renamed 2026-08-24 from
143
153
  the mockup's "Ask Me Anything") both **open the Talos chat drawer** as of 2026-08-24.
144
154
  Neither is inert any more. The drawer, its backend adapter, and its offline fallback
@@ -169,8 +179,10 @@ ported. All of it is scoped under `.security-shell`.
169
179
 
170
180
  ## Known gaps / pending work
171
181
 
172
- - **Calendly URL unverified** (above) — still the top open item, and now also the
173
- drawer's "Book a meeting" destination, so a bad slug breaks two paths.
182
+ - **Booking link is DEAD** (above — Calendly 404s; TOGA uses Cal.com, and no security
183
+ event type exists yet). Top open item: it is both the page's primary CTA and the drawer's
184
+ "Book a meeting" destination, so today **neither conversion path works**. Needs a Cal.com
185
+ event type created by the Cal.com owner, then `primaryCtaHref` + campaign `cta_url` set.
174
186
  - **Chat drawer's origin allowlist is not done** — `api.togaiq.com` is origin/UA gated,
175
187
  so until localhost / sandbox / prod domains are allowlisted the drawer silently answers
176
188
  from its scripted fallback (see [landing-chat-drawer.md](landing-chat-drawer.md)).
@@ -211,6 +223,11 @@ ported. All of it is scoped under `.security-shell`.
211
223
  the page gains a form or reads a query param.
212
224
 
213
225
  ## Change history
226
+ - 2026-08-25 — VERIFIED the primary-CTA booking link is dead: the mockup's Calendly URL and
227
+ the whole `calendly.com/toga-technology` org 404. TOGA books via Cal.com team
228
+ `toga-technology`, which has only the healthcare `discovery-call` event type (both prod
229
+ campaigns use it); no security event type exists. Recorded the fix path (create Cal.com
230
+ event → set `primaryCtaHref` + campaign `cta_url`). (tcox)
214
231
  - 2026-08-25 — The source mockup folder `BDR/AI BDR - Security/` was **deleted from the
215
232
  repo** (port complete; shipped code is the reference now). Its `eslint.config.mjs`
216
233
  `globalIgnores` entry was removed with it; the porting-related gotchas are retired.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.647",
3
+ "version": "1.0.649",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",