fix(mobile): advertise mobile client capability

This commit is contained in:
poyrazavsever
2026-07-29 12:30:36 +03:00
parent 07a0122d50
commit 13bfba1403
5 changed files with 52 additions and 11 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ import {
type ApiLocalizationMetadata,
} from "../server/api/v1/localization";
import {
NETA_CAPABILITIES,
NETA_CAPABILITY_DETAILS,
type NetaLocalizedResponse,
type NetaTranslationMutationShape,
} from "../server/api/v1/contracts";
@@ -89,7 +89,7 @@ assert.equal(contract.responseContract.localizedResourceField, "localized");
assert.equal(contract.responseContract.translationsField, "translations");
assert.equal(
NETA_CAPABILITIES.some((capability) => capability.id === "instance.localization" && capability.status === "available"),
NETA_CAPABILITY_DETAILS.some((capability) => capability.id === "instance.localization" && capability.status === "available"),
true,
);
+13 -3
View File
@@ -102,8 +102,18 @@ try {
assert.equal(publicMeta.payload.data.client.minimumSupportedVersion, "1.2.3-smoke.1");
assert.equal(publicMeta.payload.data.links.me, `${baseUrl}/api/v1/me`);
assert.deepEqual(publicMeta.payload.data.client.platforms, ["ios", "android"]);
assert.equal(
publicMeta.payload.data.capabilities.includes("mobile-v1"),
true,
"Public metadata must advertise the base mobile client contract",
);
assert.equal(
discovery.capabilities.includes("mobile-v1"),
true,
"Discovery must advertise the base mobile client contract",
);
assert.deepEqual(
publicMeta.payload.data.capabilities.find(
publicMeta.payload.data.capabilityDetails.find(
(capability) => capability.id === "auth.device-pairing",
),
{
@@ -337,7 +347,7 @@ try {
assert.equal(invalidChatRequest.headers.get("x-neta-error-code"), "VALIDATION_ERROR");
assert.match(
await invalidChatRequest.text(),
/"messages" alanı boş olamaz/,
/^chat\.errors\.invalidDetailed\|messages: too_small$/,
"Chat validation errors must identify the invalid request field",
);
@@ -353,7 +363,7 @@ try {
assert.equal(missingChatSettings.status, 400, "Missing AI key must fail: /api/chat");
assert.match(
await missingChatSettings.text(),
/AI sağlayıcısı ve API anahtarı/,
/^chat\.errors\.invalidDetailed\|missing_settings$/,
"The AI SDK v6 transport envelope must pass request validation and reach provider settings",
);
assert.equal(
+2
View File
@@ -18,6 +18,8 @@ for (const value of [
'NETA_PROTOCOL = "neta"',
"NETA_DISCOVERY_VERSION = 1",
'NETA_API_VERSION = "1"',
'id: "mobile-v1"',
"NETA_CAPABILITY_DETAILS",
'"instance.localization"',
'"auth.device-pairing"',
'status: "planned"',