diff --git a/.changeset/24405-mcp-connect-agent-subtitle.md b/.changeset/24405-mcp-connect-agent-subtitle.md new file mode 100644 index 00000000000..f2fecbe6cbd --- /dev/null +++ b/.changeset/24405-mcp-connect-agent-subtitle.md @@ -0,0 +1,10 @@ +--- +'@objectstack/mcp': patch +--- + +Clause-②: no (copy only: no accept set or public surface moves; owes the seat's review of record at `TIER_DEFAULT` before the queue) + +fix(mcp): the Connect-an-Agent page subtitle says "this system" + +- **What changed.** The Connect-an-Agent page header now reads "Give any MCP-capable AI client governed access to this system — every call runs under the caller's own permissions and row-level security." Inside the running system, user-facing copy names the system the caller is in as "this system". +- **Unchanged.** The page's name, layout, components and navigation entries, and every MCP route and payload. diff --git a/.changeset/24405-platform-objects-this-system.md b/.changeset/24405-platform-objects-this-system.md new file mode 100644 index 00000000000..bcadf995437 --- /dev/null +++ b/.changeset/24405-platform-objects-this-system.md @@ -0,0 +1,11 @@ +--- +'@objectstack/platform-objects': patch +--- + +Clause-②: no (copy only: no accept set or public surface moves; owes the seat's review of record at `TIER_DEFAULT` before the queue) + +fix(platform-objects): SSO provider, OAuth application and Connect-an-Agent copy says "this system" + +- **What changed.** Inside the running system, user-facing copy names the system the user is in as "this system". The `sys_sso_provider` object description ("External SSO identity providers (OIDC / SAML) this system federates login to"), the `clientId` help text of its Register SSO Provider action ("OAuth client ID issued by the IdP for this system."), and the OAuth applications grid's empty state ("Register an application to let its clients sign users in with this system.") now say so. The `en` copy of the Connect-an-Agent page subtitle follows the page's new text. +- **Translations.** The zh-CN, ja-JP and es-ES values of the same strings are re-translated, and the recorded source hash of the Connect-an-Agent subtitle moves to the new English text in all three, so those locales keep serving their translation rather than falling back to English. +- **Unchanged.** Every object, field, action and page name, and all behaviour. diff --git a/packages/mcp/src/connect-ui.ts b/packages/mcp/src/connect-ui.ts index 400cf11586d..d9173cb002d 100644 --- a/packages/mcp/src/connect-ui.ts +++ b/packages/mcp/src/connect-ui.ts @@ -60,7 +60,7 @@ export const CONNECT_AGENT_PAGE: Page = { properties: { title: 'Connect an Agent', subtitle: - 'Give any MCP-capable AI client governed access to this environment — ' + + 'Give any MCP-capable AI client governed access to this system — ' + 'every call runs under the caller\'s own permissions and row-level security.', // `icon` removed here (#6946): `page:header` never drew one — retired from the spec. }, diff --git a/packages/platform-objects/src/apps/translations/en.objects.generated.ts b/packages/platform-objects/src/apps/translations/en.objects.generated.ts index 785d046f9a3..708017a8944 100644 --- a/packages/platform-objects/src/apps/translations/en.objects.generated.ts +++ b/packages/platform-objects/src/apps/translations/en.objects.generated.ts @@ -1491,7 +1491,7 @@ export const enObjects: NonNullable = { label: "All", emptyState: { title: "No OAuth applications yet", - message: "Register an application to let its clients sign users in with this environment." + message: "Register an application to let its clients sign users in with this system." } }, mine: { @@ -1894,7 +1894,7 @@ export const enObjects: NonNullable = { sys_sso_provider: { label: "SSO Provider", pluralLabel: "SSO Providers", - description: "External SSO identity providers (OIDC / SAML) this environment federates login to", + description: "External SSO identity providers (OIDC / SAML) this system federates login to", fields: { id: { label: "ID" @@ -1965,7 +1965,7 @@ export const enObjects: NonNullable = { }, clientId: { label: "Client ID", - helpText: "OAuth client ID issued by the IdP for this environment." + helpText: "OAuth client ID issued by the IdP for this system." }, clientSecret: { label: "Client Secret", diff --git a/packages/platform-objects/src/apps/translations/en.ts b/packages/platform-objects/src/apps/translations/en.ts index c717cb7717a..521638376de 100644 --- a/packages/platform-objects/src/apps/translations/en.ts +++ b/packages/platform-objects/src/apps/translations/en.ts @@ -267,7 +267,7 @@ export const en: TranslationData = { connect_agent: { label: 'Connect an Agent', subtitle: - 'Give any MCP-capable AI client governed access to this environment — ' + 'Give any MCP-capable AI client governed access to this system — ' + "every call runs under the caller's own permissions and row-level security.", }, diff --git a/packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts b/packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts index 0e2107e022a..e3adadf70bf 100644 --- a/packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts +++ b/packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts @@ -1491,7 +1491,7 @@ export const esESObjects: NonNullable = { label: "Todas", emptyState: { title: "Aún no hay aplicaciones OAuth", - message: "Registra una aplicación para que sus clientes puedan iniciar la sesión de los usuarios con este entorno." + message: "Registra una aplicación para que sus clientes puedan iniciar la sesión de los usuarios con este sistema." } }, mine: { @@ -1894,7 +1894,7 @@ export const esESObjects: NonNullable = { sys_sso_provider: { label: "Proveedor SSO", pluralLabel: "Proveedores SSO", - description: "Proveedores de identidad SSO externos (OIDC / SAML) a los que este entorno federa el inicio de sesión", + description: "Proveedores de identidad SSO externos (OIDC / SAML) a los que este sistema federa el inicio de sesión", fields: { id: { label: "ID" @@ -1965,7 +1965,7 @@ export const esESObjects: NonNullable = { }, clientId: { label: "ID de cliente", - helpText: "ID de cliente OAuth emitido por el IdP para este entorno." + helpText: "ID de cliente OAuth emitido por el IdP para este sistema." }, clientSecret: { label: "Secreto de cliente", diff --git a/packages/platform-objects/src/apps/translations/es-ES.source-hashes.ts b/packages/platform-objects/src/apps/translations/es-ES.source-hashes.ts index 8a71d031d48..73fad1650b8 100644 --- a/packages/platform-objects/src/apps/translations/es-ES.source-hashes.ts +++ b/packages/platform-objects/src/apps/translations/es-ES.source-hashes.ts @@ -176,7 +176,7 @@ export const esESSourceHashes: Readonly> = { 'pages.cloud_connection_settings.label': '3a7caad0cb98e71d', 'pages.cloud_connection_settings.subtitle': 'f5cdd253e8ffef9f', 'pages.connect_agent.label': 'eeb174613510e87d', - 'pages.connect_agent.subtitle': '2d0f9a000824e78a', + 'pages.connect_agent.subtitle': 'b0d7c6d174511bcb', 'pages.sys_user_detail.label': '6c0d22a931e235bd', 'pages.sys_organization_detail.label': '3e55836156e1c1de', }; diff --git a/packages/platform-objects/src/apps/translations/es-ES.ts b/packages/platform-objects/src/apps/translations/es-ES.ts index 0124a65e356..1f7843928b0 100644 --- a/packages/platform-objects/src/apps/translations/es-ES.ts +++ b/packages/platform-objects/src/apps/translations/es-ES.ts @@ -176,7 +176,7 @@ export const esES: TranslationData = { connect_agent: { label: 'Conectar un agente', subtitle: - 'Concede a cualquier cliente de IA compatible con MCP acceso controlado a este entorno: ' + 'Concede a cualquier cliente de IA compatible con MCP acceso controlado a este sistema: ' + 'cada llamada se ejecuta con los permisos propios de quien la realiza y con seguridad a nivel de fila.', }, diff --git a/packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts b/packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts index 78b3569f559..f15a969b1f0 100644 --- a/packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts +++ b/packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts @@ -1491,7 +1491,7 @@ export const jaJPObjects: NonNullable = { label: "すべて", emptyState: { title: "まだ OAuth アプリケーションがありません", - message: "アプリケーションを登録すると、そのクライアントがこの環境でユーザーをサインインさせられるようになります。" + message: "アプリケーションを登録すると、そのクライアントがこのシステムでユーザーをサインインさせられるようになります。" } }, mine: { @@ -1894,7 +1894,7 @@ export const jaJPObjects: NonNullable = { sys_sso_provider: { label: "SSO プロバイダー", pluralLabel: "SSO プロバイダー", - description: "この環境がログインをフェデレーションする外部 SSO ID プロバイダー(OIDC / SAML)", + description: "このシステムがログインをフェデレーションする外部 SSO ID プロバイダー(OIDC / SAML)", fields: { id: { label: "ID" @@ -1965,7 +1965,7 @@ export const jaJPObjects: NonNullable = { }, clientId: { label: "クライアント ID", - helpText: "この環境向けに IdP が発行した OAuth クライアント ID。" + helpText: "このシステム向けに IdP が発行した OAuth クライアント ID。" }, clientSecret: { label: "クライアントシークレット", diff --git a/packages/platform-objects/src/apps/translations/ja-JP.source-hashes.ts b/packages/platform-objects/src/apps/translations/ja-JP.source-hashes.ts index 77c100b94ac..e088b62d82c 100644 --- a/packages/platform-objects/src/apps/translations/ja-JP.source-hashes.ts +++ b/packages/platform-objects/src/apps/translations/ja-JP.source-hashes.ts @@ -176,7 +176,7 @@ export const jaJPSourceHashes: Readonly> = { 'pages.cloud_connection_settings.label': '3a7caad0cb98e71d', 'pages.cloud_connection_settings.subtitle': 'f5cdd253e8ffef9f', 'pages.connect_agent.label': 'eeb174613510e87d', - 'pages.connect_agent.subtitle': '2d0f9a000824e78a', + 'pages.connect_agent.subtitle': 'b0d7c6d174511bcb', 'pages.sys_user_detail.label': '6c0d22a931e235bd', 'pages.sys_organization_detail.label': '3e55836156e1c1de', }; diff --git a/packages/platform-objects/src/apps/translations/ja-JP.ts b/packages/platform-objects/src/apps/translations/ja-JP.ts index ee6920f22d4..14cd00bd630 100644 --- a/packages/platform-objects/src/apps/translations/ja-JP.ts +++ b/packages/platform-objects/src/apps/translations/ja-JP.ts @@ -175,7 +175,7 @@ export const jaJP: TranslationData = { connect_agent: { label: 'エージェントを接続', subtitle: - 'MCP 対応の AI クライアントにこの環境への統制されたアクセスを許可します。すべての呼び出しは、呼び出し元自身の権限と行レベルセキュリティのもとで実行されます。', + 'MCP 対応の AI クライアントにこのシステムへの統制されたアクセスを許可します。すべての呼び出しは、呼び出し元自身の権限と行レベルセキュリティのもとで実行されます。', }, // Platform record pages (#15743) -- see `en.ts` for the key set. diff --git a/packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts b/packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts index 6776e74cf58..ff96b07dbfd 100644 --- a/packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts +++ b/packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts @@ -1491,7 +1491,7 @@ export const zhCNObjects: NonNullable = { label: "全部", emptyState: { title: "尚无 OAuth 应用", - message: "注册应用后,其客户端即可通过此环境让用户登录。" + message: "注册应用后,其客户端即可通过本系统让用户登录。" } }, mine: { @@ -1894,7 +1894,7 @@ export const zhCNObjects: NonNullable = { sys_sso_provider: { label: "SSO 提供方", pluralLabel: "SSO 提供方", - description: "本环境用于联合登录的外部 SSO 身份提供方(OIDC / SAML)", + description: "本系统用于联合登录的外部 SSO 身份提供方(OIDC / SAML)", fields: { id: { label: "ID" @@ -1965,7 +1965,7 @@ export const zhCNObjects: NonNullable = { }, clientId: { label: "客户端 ID", - helpText: "IdP 为本环境签发的 OAuth 客户端 ID。" + helpText: "IdP 为本系统签发的 OAuth 客户端 ID。" }, clientSecret: { label: "客户端密钥", diff --git a/packages/platform-objects/src/apps/translations/zh-CN.source-hashes.ts b/packages/platform-objects/src/apps/translations/zh-CN.source-hashes.ts index 49bf4c62f28..6f979543020 100644 --- a/packages/platform-objects/src/apps/translations/zh-CN.source-hashes.ts +++ b/packages/platform-objects/src/apps/translations/zh-CN.source-hashes.ts @@ -176,7 +176,7 @@ export const zhCNSourceHashes: Readonly> = { 'pages.cloud_connection_settings.label': '3a7caad0cb98e71d', 'pages.cloud_connection_settings.subtitle': 'f5cdd253e8ffef9f', 'pages.connect_agent.label': 'eeb174613510e87d', - 'pages.connect_agent.subtitle': '2d0f9a000824e78a', + 'pages.connect_agent.subtitle': 'b0d7c6d174511bcb', 'pages.sys_user_detail.label': '6c0d22a931e235bd', 'pages.sys_organization_detail.label': '3e55836156e1c1de', }; diff --git a/packages/platform-objects/src/apps/translations/zh-CN.ts b/packages/platform-objects/src/apps/translations/zh-CN.ts index bdbaa3b7c39..7b3fa4b042f 100644 --- a/packages/platform-objects/src/apps/translations/zh-CN.ts +++ b/packages/platform-objects/src/apps/translations/zh-CN.ts @@ -183,7 +183,7 @@ export const zhCN: TranslationData = { }, connect_agent: { label: '连接智能体', - subtitle: '让任意支持 MCP 的 AI 客户端受控访问此环境——每次调用都在调用者自身的权限与行级安全范围内执行。', + subtitle: '让任意支持 MCP 的 AI 客户端受控访问本系统——每次调用都在调用者自身的权限与行级安全范围内执行。', }, // Platform record pages (#15743) -- see `en.ts` for the key set. diff --git a/packages/platform-objects/src/identity/sys-oauth-application.object.ts b/packages/platform-objects/src/identity/sys-oauth-application.object.ts index 0882680ddb4..3cf3999c428 100644 --- a/packages/platform-objects/src/identity/sys-oauth-application.object.ts +++ b/packages/platform-objects/src/identity/sys-oauth-application.object.ts @@ -233,7 +233,7 @@ export const SysOauthApplication = ObjectSchema.create({ pagination: { pageSize: 50 }, emptyState: { title: 'No OAuth applications yet', - message: 'Register an application to let its clients sign users in with this environment.', + message: 'Register an application to let its clients sign users in with this system.', }, }, mine: { diff --git a/packages/platform-objects/src/identity/sys-sso-provider.object.ts b/packages/platform-objects/src/identity/sys-sso-provider.object.ts index 0c734b0accf..e94741900f2 100644 --- a/packages/platform-objects/src/identity/sys-sso-provider.object.ts +++ b/packages/platform-objects/src/identity/sys-sso-provider.object.ts @@ -64,7 +64,7 @@ export const SysSsoProvider = ObjectSchema.create({ reason: 'Identity table managed by better-auth (@better-auth/sso) — see ADR-0135 D6.', docsUrl: 'https://objectstack.ai/docs/references/shared/protection', }, - description: 'External SSO identity providers (OIDC / SAML) this environment federates login to', + description: 'External SSO identity providers (OIDC / SAML) this system federates login to', displayNameField: 'provider_id', nameField: 'provider_id', // [ADR-0079] canonical primary-title pointer (mirrors deprecated displayNameField) titleFormat: '{provider_id}', @@ -109,7 +109,7 @@ export const SysSsoProvider = ObjectSchema.create({ { name: 'providerId', label: 'Provider ID', type: 'text', required: true, helpText: 'Stable identifier, e.g. "okta" or "acme-entra".' }, { name: 'issuer', label: 'Issuer URL', type: 'text', required: true, helpText: 'IdP issuer, e.g. https://acme.okta.com. Discovery is fetched from here unless an explicit URL is given below.' }, { name: 'domain', label: 'Email Domain', type: 'text', required: true, helpText: 'Users with this email domain are routed to this IdP, e.g. acme.com.' }, - { name: 'clientId', label: 'Client ID', type: 'text', required: true, helpText: 'OAuth client ID issued by the IdP for this environment.' }, + { name: 'clientId', label: 'Client ID', type: 'text', required: true, helpText: 'OAuth client ID issued by the IdP for this system.' }, { name: 'clientSecret', label: 'Client Secret', type: 'text', required: true, helpText: 'OAuth client secret (stored encrypted by better-auth).' }, { name: 'discoveryEndpoint', label: 'Discovery URL', type: 'text', required: false, helpText: 'Optional. OIDC discovery document URL. Leave blank to derive `/.well-known/openid-configuration`.' }, { name: 'scopes', label: 'Scopes', type: 'text', required: false, placeholder: 'openid email profile', helpText: 'Optional. Space- or comma-separated OAuth scopes. Defaults to "openid email profile".' },