diff --git a/plugins/platforms/photon/README.md b/plugins/platforms/photon/README.md index 3742296a6e8..91680ebd1a6 100644 --- a/plugins/platforms/photon/README.md +++ b/plugins/platforms/photon/README.md @@ -162,7 +162,8 @@ All env vars are documented in `plugin.yaml`. The most important: (no `^` range) and installed with `npm ci`, because the SDK ships breaking majors (v2 removed `defineFusorPlatform`; v3 reworked space construction; v5 split it into `@spectrum-ts/*` packages, with `spectrum-ts` as the umbrella -that re-exports them). A floating range or `npm install spectrum-ts@latest` +that re-exports them; v8 made `richlink` outbound-only, so inbound rich links +now arrive as plain `text`). A floating range or `npm install spectrum-ts@latest` would let a breaking release take down fresh setups silently. Upgrades are deliberate: diff --git a/plugins/platforms/photon/sidecar/index.mjs b/plugins/platforms/photon/sidecar/index.mjs index c382a2a6a66..0fefc62e414 100644 --- a/plugins/platforms/photon/sidecar/index.mjs +++ b/plugins/platforms/photon/sidecar/index.mjs @@ -38,7 +38,7 @@ // On SIGINT/SIGTERM the sidecar calls `app.stop()` (3s graceful) before // exiting. Logs go to stderr; Python supervises restart. // -// Requires spectrum-ts 7.x — pinned exactly in package.json because the SDK +// Requires spectrum-ts 8.x — pinned exactly in package.json because the SDK // ships breaking majors; see README "Upgrading spectrum-ts". // // Env vars (required): diff --git a/plugins/platforms/photon/sidecar/package-lock.json b/plugins/platforms/photon/sidecar/package-lock.json index 31452c5f840..9f23a46c228 100644 --- a/plugins/platforms/photon/sidecar/package-lock.json +++ b/plugins/platforms/photon/sidecar/package-lock.json @@ -9,7 +9,7 @@ "version": "0.4.0", "hasInstallScript": true, "dependencies": { - "spectrum-ts": "7.0.0" + "spectrum-ts": "8.0.0" }, "engines": { "node": ">=18.17" @@ -96,9 +96,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", - "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.8.0.tgz", + "integrity": "sha512-hd1Lfh8p545nNz+jq1Ejfz+Mn1hyLuxYn1YzTfFNrxr8urEWMNQLPf1Th8kjOH+HxwawCrtgBp8JpBUR4ZSgww==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" @@ -129,6 +129,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { "version": "0.218.0", "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.218.0.tgz", @@ -148,6 +163,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz", @@ -197,6 +227,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/otlp-transformer": { "version": "0.218.0", "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.218.0.tgz", @@ -217,6 +262,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz", @@ -266,21 +326,6 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.8.0.tgz", - "integrity": "sha512-hd1Lfh8p545nNz+jq1Ejfz+Mn1hyLuxYn1YzTfFNrxr8urEWMNQLPf1Th8kjOH+HxwawCrtgBp8JpBUR4ZSgww==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, "node_modules/@opentelemetry/sdk-logs": { "version": "0.218.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.218.0.tgz", @@ -299,6 +344,21 @@ "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz", @@ -331,6 +391,21 @@ "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.7.1.tgz", + "integrity": "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.7.1.tgz", @@ -364,21 +439,6 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.8.0.tgz", - "integrity": "sha512-hd1Lfh8p545nNz+jq1Ejfz+Mn1hyLuxYn1YzTfFNrxr8urEWMNQLPf1Th8kjOH+HxwawCrtgBp8JpBUR4ZSgww==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", @@ -437,19 +497,21 @@ } }, "node_modules/@photon-ai/otel": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@photon-ai/otel/-/otel-1.0.0.tgz", - "integrity": "sha512-5fACVHN7BtGS+phglVAxun5QLckNUSS4p750oCxR//m9JNVzFQMoLFWfC6DnWBP/W0/+B2yP75+3NMVLodEJEg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@photon-ai/otel/-/otel-1.1.0.tgz", + "integrity": "sha512-v6Ai5Anws+gkjzZQirXpuF6VtS4DmSnpx9o208R2mhwqONNp2iqwQx4400C6r8oyqv7mz65tkkTd083kG5/kng==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.1", "@opentelemetry/api-logs": "^0.218.0", "@opentelemetry/context-async-hooks": "^2.7.1", + "@opentelemetry/core": "^2.7.1", "@opentelemetry/exporter-logs-otlp-http": "^0.218.0", "@opentelemetry/exporter-trace-otlp-http": "^0.218.0", "@opentelemetry/resources": "^2.7.1", "@opentelemetry/sdk-logs": "^0.218.0", - "@opentelemetry/sdk-trace-base": "^2.7.1" + "@opentelemetry/sdk-trace-base": "^2.7.1", + "@opentelemetry/semantic-conventions": "^1.41.1" }, "engines": { "node": ">=20" @@ -516,9 +578,9 @@ "license": "MIT" }, "node_modules/@spectrum-ts/core": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@spectrum-ts/core/-/core-7.0.0.tgz", - "integrity": "sha512-zZmXHeVmoM8RBgGSlVW46njM/vNM2M35NQOTHu8vzufWp25eOT3ERIry1AX2vbri7X34Le3V9W1lwuQYZ+hufw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@spectrum-ts/core/-/core-8.0.0.tgz", + "integrity": "sha512-qcMcx1Vf/hVKzyGkbNfrVf6q7t4Zsnr65Riq843W1ButJQnUf8MhCPwnSOavWYkd8IVXL4XSndqMMdOP9xPJeg==", "license": "MIT", "dependencies": { "@photon-ai/otel": "^1.0.0", @@ -541,9 +603,9 @@ } }, "node_modules/@spectrum-ts/imessage": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@spectrum-ts/imessage/-/imessage-7.0.0.tgz", - "integrity": "sha512-j3btkqaxvq21QZRQUCHcamM/8md4bTxa1TWuACToxju3VUl0dafyLDLk6g1Y27DFn3ivo+8ZyLRNi4MiI7HwiA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@spectrum-ts/imessage/-/imessage-8.0.0.tgz", + "integrity": "sha512-HjWoAZqXxuRsiY33aiJs4g6u/R8HE4V0/rtDd0wE2b+Hq/U0owDuc6T0+cLjrM/rC03jvVkTCnKSMeJWF+mYUA==", "license": "MIT", "dependencies": { "@photon-ai/advanced-imessage": "^0.12.0", @@ -554,28 +616,28 @@ "zod": "^4.2.1" }, "peerDependencies": { - "@spectrum-ts/core": "^7.0.0", + "@spectrum-ts/core": "^8.0.0", "typescript": "^5 || ^6.0.0" } }, "node_modules/@spectrum-ts/slack": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@spectrum-ts/slack/-/slack-7.0.0.tgz", - "integrity": "sha512-sDNBUE6oObEuu9qgUVyX47sJ4uB6EbNYlMH09KBjBCYOrnYvuNox2n1I7xnKu3c2zKV3hSQluP7b9+1o3jubTA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@spectrum-ts/slack/-/slack-8.0.0.tgz", + "integrity": "sha512-UHLL0xxThDUBPYGbT2ms9Xq5B8dSQy3SoRZX88a04i649UebnjKg9cPU2amxA8gzRcARkQrfLFtq0CFz1jXcfw==", "license": "MIT", "dependencies": { "@photon-ai/slack": "^0.2.0", "zod": "^4.2.1" }, "peerDependencies": { - "@spectrum-ts/core": "^7.0.0", + "@spectrum-ts/core": "^8.0.0", "typescript": "^5 || ^6.0.0" } }, "node_modules/@spectrum-ts/telegram": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@spectrum-ts/telegram/-/telegram-7.0.0.tgz", - "integrity": "sha512-W+OGwH4S7aOMZ7/KHwsVZsGbs+9MqEUK83g10kJmOpVQxVR7Bp9jkQTBvNJlP++ilJhb5ETow+67ky+fMA1yfA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@spectrum-ts/telegram/-/telegram-8.0.0.tgz", + "integrity": "sha512-pvF9LrXdcewDthh89viu2lQxcxmmeXfu8MZpymIJSpP66SjCbTwhIbWkVFQbrJbBjLcB3UdyXdQv3dNoquEcRQ==", "license": "MIT", "dependencies": { "@photon-ai/telegram-ts": "10.0.0", @@ -583,27 +645,27 @@ "zod": "^4.2.1" }, "peerDependencies": { - "@spectrum-ts/core": "^7.0.0", + "@spectrum-ts/core": "^8.0.0", "typescript": "^5 || ^6.0.0" } }, "node_modules/@spectrum-ts/terminal": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@spectrum-ts/terminal/-/terminal-7.0.0.tgz", - "integrity": "sha512-2fSqdcRogOdk+B+pDVnMj7cdRTlvcFjS6haK/77yjRXhkwx+99hLrTe3skmU/jIVUXTC3Ujy67x0A4R2D3X4Vw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@spectrum-ts/terminal/-/terminal-8.0.0.tgz", + "integrity": "sha512-VOyirdioTMAuR7+QNsWt708hG2ZVwt4qhyn/6CXbhnqM/V2FbEu5vNkbOlrxNj4o3y4Lr1mWMih2Fb3udJd+Nw==", "license": "MIT", "dependencies": { "zod": "^4.2.1" }, "peerDependencies": { - "@spectrum-ts/core": "^7.0.0", + "@spectrum-ts/core": "^8.0.0", "typescript": "^5 || ^6.0.0" } }, "node_modules/@spectrum-ts/whatsapp-business": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@spectrum-ts/whatsapp-business/-/whatsapp-business-7.0.0.tgz", - "integrity": "sha512-3EPP7bUn9RgURus3J1RCOAyfXSDJ5KehD5mMPfTQysZRyRBM5ePDU6w11p4/DiosLk+5X0hXaA9G9uz1gmNZxQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@spectrum-ts/whatsapp-business/-/whatsapp-business-8.0.0.tgz", + "integrity": "sha512-O4mlJi/YtFpnNsiqMo5aReC/nKg66voPp0botJW+MUWZpMlon4/tJ8uVXTUwzQFwOmNRjifVTSD+R/Tll3Kvaw==", "license": "MIT", "dependencies": { "@photon-ai/whatsapp-business": "^0.1.1", @@ -611,7 +673,7 @@ "zod": "^4.2.1" }, "peerDependencies": { - "@spectrum-ts/core": "^7.0.0", + "@spectrum-ts/core": "^8.0.0", "typescript": "^5 || ^6.0.0" } }, @@ -1299,15 +1361,15 @@ } }, "node_modules/open-graph-scraper": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/open-graph-scraper/-/open-graph-scraper-6.11.0.tgz", - "integrity": "sha512-KkO3qMMzJj9KYGtCl19dRtncb+RuBiG/P9BgukcAG4p2w9wSAWTE90vL6/xqth1K9ThkYF/+xfTGrVvU79TJtQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/open-graph-scraper/-/open-graph-scraper-6.12.0.tgz", + "integrity": "sha512-x0fS3eHxdCox+rFBhQSVe+qBznSPn1pspp8A4BoaVEkiECZEwagEb8z06swLfaFFE2gefj1BvEBeJmdeGTDnYw==", "license": "MIT", "dependencies": { - "chardet": "^2.1.1", - "cheerio": "^1.1.2", - "iconv-lite": "^0.7.0", - "undici": "^7.16.0" + "chardet": "^2.2.0", + "cheerio": "^1.2.0", + "iconv-lite": "^0.7.2", + "undici": "^7.28.0" }, "engines": { "node": ">=20.0.0" @@ -1541,17 +1603,17 @@ } }, "node_modules/spectrum-ts": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/spectrum-ts/-/spectrum-ts-7.0.0.tgz", - "integrity": "sha512-YdfU5CEZKQL7feyyQylwbzwG+f7Kk4h7OZxztok5iNdYGY1dTpUvJrTpkkLCwXOewsJR9M2n4os5hmJvUWeO6g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/spectrum-ts/-/spectrum-ts-8.0.0.tgz", + "integrity": "sha512-MY/GeqWZ+aptIpG6q0385eSizxiqNo0bAEvEfSqI1ObifhsLTbxnak1ibOpfKIJF38+gR6x9hf50WXetPE36Xw==", "license": "MIT", "dependencies": { - "@spectrum-ts/core": "7.0.0", - "@spectrum-ts/imessage": "7.0.0", - "@spectrum-ts/slack": "7.0.0", - "@spectrum-ts/telegram": "7.0.0", - "@spectrum-ts/terminal": "7.0.0", - "@spectrum-ts/whatsapp-business": "7.0.0" + "@spectrum-ts/core": "8.0.0", + "@spectrum-ts/imessage": "8.0.0", + "@spectrum-ts/slack": "8.0.0", + "@spectrum-ts/telegram": "8.0.0", + "@spectrum-ts/terminal": "8.0.0", + "@spectrum-ts/whatsapp-business": "8.0.0" } }, "node_modules/string_decoder": { diff --git a/plugins/platforms/photon/sidecar/package.json b/plugins/platforms/photon/sidecar/package.json index 16d844346d0..d689c78e176 100644 --- a/plugins/platforms/photon/sidecar/package.json +++ b/plugins/platforms/photon/sidecar/package.json @@ -13,7 +13,7 @@ "node": ">=18.17" }, "dependencies": { - "spectrum-ts": "7.0.0" + "spectrum-ts": "8.0.0" }, "overrides": { "protobufjs": "8.6.1", diff --git a/tests/plugins/platforms/photon/test_spectrum_patch.py b/tests/plugins/platforms/photon/test_spectrum_patch.py index 89e681dfddd..ce41afdd56b 100644 --- a/tests/plugins/platforms/photon/test_spectrum_patch.py +++ b/tests/plugins/platforms/photon/test_spectrum_patch.py @@ -64,7 +64,7 @@ def _tabify(src: str) -> str: return "\n".join(out) -# A faithful, *executable* slice of spectrum-ts 7.x's iMessage inbound mapper: +# A faithful, *executable* slice of spectrum-ts 8.x's iMessage inbound mapper: # the two functions the patch rewrites (`rebuildFromAppleMessage` for # `space.getMessage`, `toInboundMessages` for the live stream), plus stubs of # the helpers they close over. Mirrors the published shape — tab-indented (via @@ -77,9 +77,6 @@ const asText = (text) => ({ type: "text", text }); const asCustom = (message) => ({ type: "custom" }); const asProviderGroup = (items) => ({ type: "group", items }); const messageAttachments = (message) => message.content.attachments ?? []; -const getBalloonBundleId = () => ""; -const URL_BALLOON_BUNDLE_ID = "url-balloon"; -const toRichlinkMessage = (message, base, id) => ({ ...base, id, content: { type: "richlink" } }); const buildMessageBase = (message, chatGuidHint, timestamp, phone) => ({ direction: "inbound", sender: { id: "s" }, space: { id: "sp", type: "dm", phone }, timestamp }); const buildAttachmentMessage = async (client, base, info, id, partIndex, parentId) => { const msg = { ...base, id, content: { type: "attachment", id: info.guid }, partIndex }; @@ -109,7 +106,6 @@ const rebuildFromAppleMessage = async (client, message, phone, chatGuidHint) => content: asProviderGroup(items) }; } - if (getBalloonBundleId(message) === URL_BALLOON_BUNDLE_ID) return toRichlinkMessage(message, base, messageGuidStr); const text = message.content.text; return { ...base, @@ -120,11 +116,6 @@ const rebuildFromAppleMessage = async (client, message, phone, chatGuidHint) => const toInboundMessages = async (client, cache, event, phone) => { const base = buildMessageBase(event.message, event.chatGuid, event.occurredAt, phone); const messageGuidStr = event.message.guid; - if (getBalloonBundleId(event.message) === URL_BALLOON_BUNDLE_ID) { - const msg = toRichlinkMessage(event.message, base, messageGuidStr); - cacheMessage(cache, msg); - return [msg]; - } const attachments = messageAttachments(event.message); if (attachments.length === 1) { const info = attachments[0]; @@ -170,7 +161,7 @@ def _write_fixture(tmp_path: Path) -> Path: def test_spectrum_patch_rewrites_the_imessage_mapper(tmp_path: Path) -> None: - """The dependency patch must apply to the 7.x `@spectrum-ts/imessage` chunk + """The dependency patch must apply to the 8.x `@spectrum-ts/imessage` chunk and rewrite both inbound mappers to thread text through attachment bubbles.""" chunk = _write_fixture(tmp_path)