Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Same concepts, different words — like British vs. American English. Roughly 80

**What it does:** Scans a customer's existing codebase and checks how their TwiML and Twilio SDK usage maps to Bandwidth's BXML.

**Outcome:** Size the migration effort and identify blockers **without writing a line of code**. You get a migration-complexity score and a per-feature *works-as-is / heads-up / blocker* breakdown.
**Outcome:** Size the migration effort and identify what needs a redesign **without writing a line of code**. You get a migration-complexity score and a per-feature *works-as-is / heads-up / no direct equivalent* breakdown.

```bash
npm install
Expand Down Expand Up @@ -56,7 +56,7 @@ npm run bxml-generator -- <in-dir> <out-dir> # writes out/bxml/*, out/MIGRAT

## Try the Compatibility Check in your browser — no command needed

The **Migration Compatibility Check** is a single, self-contained HTML file a sales engineer can double-click and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — a migration-complexity score, a *works-as-is / heads-up / blocker* verdict, the translated BXML, and a forwardable report.
The **Migration Compatibility Check** is a single, self-contained HTML file a sales engineer can double-click and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — a migration-complexity score, a *works-as-is / heads-up / no direct equivalent* verdict, the translated BXML, and a forwardable report.

```bash
npm install
Expand Down
4 changes: 2 additions & 2 deletions src/bxml-generator/report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export function renderMigration(result: GenerateResult): string {
"# Twilio → Bandwidth migration — generated BXML",
"",
`Translated **${docs.length}** TwiML document${docs.length === 1 ? "" : "s"} to native BXML` +
` (${clean} clean, ${withBlockers} with blockers).`,
` (${clean} clean, ${withBlockers} with verbs that have no direct equivalent).`,
"",
"Generated BXML is written under `bxml/`. Action/redirect URLs are preserved",
"exactly as your Twilio app used them — point those endpoints at your migrated",
Expand All @@ -37,7 +37,7 @@ export function renderMigration(result: GenerateResult): string {
if (errors.length === 0 && warnings.length === 0)
lines.push("✅ Translated cleanly.", "");
if (errors.length) {
lines.push("### 🛑 Blockers — need a human", "");
lines.push("### 🛑 No direct equivalent — needs a human", "");
for (const f of errors)
lines.push(`- **${f.verb}** — ${f.message}${f.docsUrl ? ` ([docs](${f.docsUrl}))` : ""}`);
lines.push("");
Expand Down
4 changes: 2 additions & 2 deletions src/compatibility-check/report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export function renderReport(analyses: FileAnalysis[]): string {
const lines: string[] = [
"# Twilio → Bandwidth migration — Compatibility Check",
"",
`**Migration complexity: ${score}/10** (1 + warnings + 3×blockers, capped at 10)`,
`**Migration complexity: ${score}/10** (1 + heads-up + 3× no-equivalent, capped at 10)`,
"",
`Files with Twilio voice usage: ${relevant.length}`,
"",
Expand All @@ -25,7 +25,7 @@ export function renderReport(analyses: FileAnalysis[]): string {
if (errors.length === 0 && warnings.length === 0)
lines.push("✅ Runs through the translator as-is.", "");
if (errors.length) {
lines.push("### 🛑 Blockers", "");
lines.push("### 🛑 No direct equivalent", "");
for (const f of errors)
lines.push(`- **${f.verb}** — ${f.message}${f.docsUrl ? ` ([docs](${f.docsUrl}))` : ""}`);
lines.push("");
Expand Down
2 changes: 1 addition & 1 deletion web/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Migration Compatibility Check playground

A single, self-contained HTML file a sales engineer can **double-click** and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — how much of that Twilio voice app runs on Bandwidth unchanged: a works-as-is / heads-up / blocker verdict, a migration-complexity score, the translated BXML, and a forwardable report.
A single, self-contained HTML file a sales engineer can **double-click** and present to a prospect. Paste a customer's TwiML (or pick a curated example) and it shows — live — how much of that Twilio voice app runs on Bandwidth unchanged: a works-as-is / heads-up / no direct equivalent verdict, a migration-complexity score, the translated BXML, and a forwardable report.

No server, no install, no network. It works offline on a plane.

Expand Down
4 changes: 2 additions & 2 deletions web/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ function renderVerdict(v: PreflightView): string {
<div class="pf-tiles">
${tile("clean", v.counts.clean, "Clean")}
${tile("warn", v.counts.headsUp, "Heads-up")}
${tile("block", v.counts.blocker, "Blocker")}
${tile("block", v.counts.blocker, "No direct equivalent")}
</div>
</div>
</section>`;
Expand All @@ -106,7 +106,7 @@ function tile(kind: "clean" | "warn" | "block", n: number, label: string): strin
// ---- Findings ----
function renderFindings(v: PreflightView): string {
const groups: Array<[string, "block" | "warn" | "clean", VerbCard[]]> = [
["Blockers", "block", v.blockers],
["No direct equivalent", "block", v.blockers],
["Heads-up", "warn", v.headsUp],
["Clean", "clean", v.clean],
];
Expand Down