@object-ui/i18n 11.5.0 → 13.1.0
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.
- package/CHANGELOG.md +44 -0
- package/dist/locales/ar.d.ts +41 -0
- package/dist/locales/ar.js +41 -0
- package/dist/locales/de.d.ts +41 -0
- package/dist/locales/de.js +41 -0
- package/dist/locales/en.d.ts +55 -0
- package/dist/locales/en.js +59 -0
- package/dist/locales/es.d.ts +41 -0
- package/dist/locales/es.js +41 -0
- package/dist/locales/fr.d.ts +41 -0
- package/dist/locales/fr.js +41 -0
- package/dist/locales/index.d.ts +438 -0
- package/dist/locales/ja.d.ts +41 -0
- package/dist/locales/ja.js +41 -0
- package/dist/locales/ko.d.ts +41 -0
- package/dist/locales/ko.js +41 -0
- package/dist/locales/pt.d.ts +41 -0
- package/dist/locales/pt.js +41 -0
- package/dist/locales/ru.d.ts +41 -0
- package/dist/locales/ru.js +41 -0
- package/dist/locales/zh.d.ts +55 -0
- package/dist/locales/zh.js +58 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @object-ui/i18n
|
|
2
2
|
|
|
3
|
+
## 13.1.0
|
|
4
|
+
|
|
5
|
+
## 13.0.0
|
|
6
|
+
|
|
7
|
+
### Minor Changes
|
|
8
|
+
|
|
9
|
+
- 9e38270: feat(setup): "Connect an agent" page widget (`mcp:connect-agent`) — framework#2714 Phase 1, #2363
|
|
10
|
+
|
|
11
|
+
The interactive body for the plugin-carried Setup page shipped by
|
|
12
|
+
`@objectstack/mcp`: the environment's MCP URL (from `/discovery`), per-client
|
|
13
|
+
connect cards (claude.ai/Desktop, Claude Code incl. the official plugin,
|
|
14
|
+
Cursor one-click deeplink, VS Code, Codex CLI), the SKILL.md download
|
|
15
|
+
(`GET /api/v1/mcp/skill`), and show-once API-key minting for headless
|
|
16
|
+
callers via the existing `POST /api/v1/keys`. Renders a disabled empty state
|
|
17
|
+
when discovery doesn't advertise `routes.mcp` (deployment opted out).
|
|
18
|
+
Translations for all nine locales.
|
|
19
|
+
|
|
20
|
+
## 12.1.0
|
|
21
|
+
|
|
22
|
+
### Minor Changes
|
|
23
|
+
|
|
24
|
+
- e1840bf: Signal the platform's preview stage in the UI.
|
|
25
|
+
|
|
26
|
+
The console top bar (`AppHeader`) now shows a small **Preview** chip next to the
|
|
27
|
+
product wordmark on every surface (home / app / orgs), so users always know the
|
|
28
|
+
whole platform is pre-GA. It's a new `PreviewBadge` component driven by a
|
|
29
|
+
`branding.stage` field in runtime-config (`'preview' | 'beta' | 'ga'`, exposed
|
|
30
|
+
via `getPlatformStage()`), which defaults to `'preview'` so the badge shows out
|
|
31
|
+
of the box. Operators flip the stage to `'ga'` at launch (`OS_PRODUCT_STAGE` /
|
|
32
|
+
`RuntimeConfigPlugin`) and the badge disappears with no code change; `'beta'`
|
|
33
|
+
renders a "Beta" chip instead. Labels are localized under `topbar.stage.*`.
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- 6cbccf3: Localize form validation messages, toast client-side validation failures, and make native date/time picker icons legible in dark mode.
|
|
38
|
+
|
|
39
|
+
Record-form validation messages (required, min/max length, min/max value, pattern, email, URL) were hard-coded English even when the field label was localized — e.g. a Chinese "计划开始日期" field showed "计划开始日期 is required". `buildValidationRules` baked English strings, so the form renderer's `t(...)` fallback never applied. It now emits `required: true` and, for the other rules, a `messageKey` + `undefined` message (a field-authored `*_message` still wins and passes through verbatim); the form renderer fills the blanks via i18n (`validation.*` keys already exist in every locale), so messages track the label's language.
|
|
40
|
+
|
|
41
|
+
When client-side validation blocks a submit, the offending field's inline error can sit below the fold in a long modal/drawer form — the user clicks 创建 and sees nothing happen. The form renderer now also fires a `toast.error` naming the fields (`validation.formInvalid`, added to all 10 locales), mirroring the existing server-error toast so the feedback is visible regardless of scroll position.
|
|
42
|
+
|
|
43
|
+
Separately, native controls now declare `color-scheme` (`light` on `:root`, `dark` on `.dark`), so the webkit calendar-picker-indicator and other built-in glyphs render light-on-dark instead of vanishing against the dark input background.
|
|
44
|
+
|
|
45
|
+
## 12.0.0
|
|
46
|
+
|
|
3
47
|
## 11.5.0
|
|
4
48
|
|
|
5
49
|
### Minor Changes
|
package/dist/locales/ar.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ declare const ar: {
|
|
|
80
80
|
email: string;
|
|
81
81
|
url: string;
|
|
82
82
|
pattern: string;
|
|
83
|
+
formInvalid: string;
|
|
83
84
|
unique: string;
|
|
84
85
|
type: string;
|
|
85
86
|
};
|
|
@@ -1700,6 +1701,46 @@ declare const ar: {
|
|
|
1700
1701
|
};
|
|
1701
1702
|
};
|
|
1702
1703
|
};
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
body: string;
|
|
1708
|
+
};
|
|
1709
|
+
url: {
|
|
1710
|
+
title: string;
|
|
1711
|
+
body: string;
|
|
1712
|
+
downloadSkill: string;
|
|
1713
|
+
skillHint: string;
|
|
1714
|
+
};
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: string;
|
|
1717
|
+
reachability: string;
|
|
1718
|
+
};
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: string;
|
|
1721
|
+
plugin: string;
|
|
1722
|
+
};
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: string;
|
|
1725
|
+
body: string;
|
|
1726
|
+
};
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: string;
|
|
1729
|
+
};
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: string;
|
|
1732
|
+
};
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: string;
|
|
1735
|
+
badge: string;
|
|
1736
|
+
body: string;
|
|
1737
|
+
namePlaceholder: string;
|
|
1738
|
+
mint: string;
|
|
1739
|
+
minting: string;
|
|
1740
|
+
showOnce: string;
|
|
1741
|
+
done: string;
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: string;
|
|
1705
1746
|
subtitle: string;
|
package/dist/locales/ar.js
CHANGED
|
@@ -80,6 +80,7 @@ const ar = {
|
|
|
80
80
|
email: "يرجى إدخال بريد إلكتروني صالح",
|
|
81
81
|
url: "يرجى إدخال رابط صالح",
|
|
82
82
|
pattern: "صيغة {{field}} غير صالحة",
|
|
83
|
+
formInvalid: "يرجى التحقق من الحقول المميزة: {{fields}}",
|
|
83
84
|
unique: "{{field}} يجب أن يكون فريداً",
|
|
84
85
|
type: "{{field}} يجب أن يكون {{type}} صالحاً",
|
|
85
86
|
},
|
|
@@ -1700,6 +1701,46 @@ const ar = {
|
|
|
1700
1701
|
},
|
|
1701
1702
|
},
|
|
1702
1703
|
},
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: 'MCP معطّل في هذا النشر',
|
|
1707
|
+
body: 'واجهة MCP متوقفة (OS_MCP_SERVER_ENABLED=false). اطلب من المشغّل إعادة تفعيلها.',
|
|
1708
|
+
},
|
|
1709
|
+
url: {
|
|
1710
|
+
title: 'نقطة نهاية MCP لهذه البيئة',
|
|
1711
|
+
body: 'أي عميل ذكاء اصطناعي يدعم MCP يتصل عبر هذا العنوان. الهوية ذاتية الخدمة: النشر هو خادم تفويض OAuth 2.1 الخاص به — تسجّل الدخول بهويتك، وكل استدعاء يخضع لصلاحياتك وأمان مستوى الصفوف.',
|
|
1712
|
+
downloadSkill: 'تنزيل SKILL.md',
|
|
1713
|
+
skillHint: 'مهارة الوكيل المحمولة: تعلّم أي وكيل داعم للمهارات كيفية العمل مع هذه البيئة.',
|
|
1714
|
+
},
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: 'الإعدادات ← الموصلات ← إضافة موصل مخصص، الصق هذا العنوان وسجّل الدخول عبر المتصفح.',
|
|
1717
|
+
reachability: 'يتصل claude.ai (الويب) من خوادم Anthropic — يجب أن يكون النشر متاحًا عبر HTTPS عام. عملاء سطح المكتب والمحليون يصلون أيضًا إلى نشر الشبكات الداخلية.',
|
|
1718
|
+
},
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: 'أمر واحد — يفتح تسجيل دخول OAuth تلقائيًا عند أول استخدام:',
|
|
1721
|
+
plugin: 'أو ثبّت الإضافة الرسمية (تضيف مهارة ObjectStack وأمر /objectstack:connect الموجَّه):',
|
|
1722
|
+
},
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: 'أضِف إلى Cursor',
|
|
1725
|
+
body: 'استخدم زر النقرة الواحدة، أو أضف ما يلي إلى .cursor/mcp.json:',
|
|
1726
|
+
},
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: 'أضِف إلى .vscode/mcp.json (أو عبر أمر MCP: Add Server):',
|
|
1729
|
+
},
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: 'أضِف إلى ~/.codex/config.toml. إذا كانت نسخة Codex لديك لا تدعم تدفق OAuth، فاستخدم ترويسة مفتاح API (انظر أدناه):',
|
|
1732
|
+
},
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: 'مفاتيح API',
|
|
1735
|
+
badge: 'بدون واجهة',
|
|
1736
|
+
body: 'للتكامل المستمر والسكربتات والوكلاء بلا متصفح. المفتاح يتصرف بهويتك — تعامل معه ككلمة مرور. يُعرض مرة واحدة فقط.',
|
|
1737
|
+
namePlaceholder: 'اسم المفتاح (مثل ci-agent)',
|
|
1738
|
+
mint: 'إنشاء مفتاح',
|
|
1739
|
+
minting: 'جارٍ الإنشاء…',
|
|
1740
|
+
showOnce: 'أُنشئ المفتاح «{{name}}» — انسخه الآن، لن يُعرض مجددًا:',
|
|
1741
|
+
done: 'تم — إخفاء',
|
|
1742
|
+
},
|
|
1743
|
+
},
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: "سوق التطبيقات",
|
|
1705
1746
|
subtitle: "استعرض التطبيقات المعتمدة المنشورة في كتالوج ObjectStack. انقر على تطبيق لرؤية التفاصيل وتثبيته في أحد بيئاتك.",
|
package/dist/locales/de.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ declare const de: {
|
|
|
80
80
|
email: string;
|
|
81
81
|
url: string;
|
|
82
82
|
pattern: string;
|
|
83
|
+
formInvalid: string;
|
|
83
84
|
unique: string;
|
|
84
85
|
type: string;
|
|
85
86
|
};
|
|
@@ -1700,6 +1701,46 @@ declare const de: {
|
|
|
1700
1701
|
};
|
|
1701
1702
|
};
|
|
1702
1703
|
};
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
body: string;
|
|
1708
|
+
};
|
|
1709
|
+
url: {
|
|
1710
|
+
title: string;
|
|
1711
|
+
body: string;
|
|
1712
|
+
downloadSkill: string;
|
|
1713
|
+
skillHint: string;
|
|
1714
|
+
};
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: string;
|
|
1717
|
+
reachability: string;
|
|
1718
|
+
};
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: string;
|
|
1721
|
+
plugin: string;
|
|
1722
|
+
};
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: string;
|
|
1725
|
+
body: string;
|
|
1726
|
+
};
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: string;
|
|
1729
|
+
};
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: string;
|
|
1732
|
+
};
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: string;
|
|
1735
|
+
badge: string;
|
|
1736
|
+
body: string;
|
|
1737
|
+
namePlaceholder: string;
|
|
1738
|
+
mint: string;
|
|
1739
|
+
minting: string;
|
|
1740
|
+
showOnce: string;
|
|
1741
|
+
done: string;
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: string;
|
|
1705
1746
|
subtitle: string;
|
package/dist/locales/de.js
CHANGED
|
@@ -80,6 +80,7 @@ const de = {
|
|
|
80
80
|
email: "Bitte geben Sie eine gültige E-Mail-Adresse ein",
|
|
81
81
|
url: "Bitte geben Sie eine gültige URL ein",
|
|
82
82
|
pattern: "{{field}} hat ein ungültiges Format",
|
|
83
|
+
formInvalid: "Bitte überprüfen Sie die markierten Felder: {{fields}}",
|
|
83
84
|
unique: "{{field}} muss eindeutig sein",
|
|
84
85
|
type: "{{field}} muss ein gültiger {{type}} sein",
|
|
85
86
|
},
|
|
@@ -1700,6 +1701,46 @@ const de = {
|
|
|
1700
1701
|
},
|
|
1701
1702
|
},
|
|
1702
1703
|
},
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: 'MCP ist auf dieser Bereitstellung deaktiviert',
|
|
1707
|
+
body: 'Die MCP-Schnittstelle ist ausgeschaltet (OS_MCP_SERVER_ENABLED=false). Bitten Sie Ihren Betreiber, sie wieder zu aktivieren.',
|
|
1708
|
+
},
|
|
1709
|
+
url: {
|
|
1710
|
+
title: 'MCP-Endpunkt dieser Umgebung',
|
|
1711
|
+
body: 'Jeder MCP-fähige KI-Client verbindet sich über diese URL. Die Identität ist Self-Service: Die Bereitstellung ist ihr eigener OAuth-2.1-Autorisierungsserver — Sie melden sich als Sie selbst an, und jeder Aufruf unterliegt Ihren Berechtigungen und der Zeilensicherheit.',
|
|
1712
|
+
downloadSkill: 'SKILL.md herunterladen',
|
|
1713
|
+
skillHint: 'Die portable Agenten-Skill-Datei: erklärt jedem skill-fähigen Agenten die Arbeit mit dieser Umgebung.',
|
|
1714
|
+
},
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: 'Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen, dann diese URL einfügen und im Browser anmelden.',
|
|
1717
|
+
reachability: 'claude.ai (Web) verbindet sich von Anthropic-Servern — die Bereitstellung muss über öffentliches HTTPS erreichbar sein. Claude Desktop und lokale Clients erreichen auch Intranet-Bereitstellungen.',
|
|
1718
|
+
},
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: 'Ein Befehl — die OAuth-Anmeldung öffnet sich bei der ersten Nutzung automatisch:',
|
|
1721
|
+
plugin: 'Oder das offizielle Plugin installieren (mit ObjectStack-Skill und geführtem /objectstack:connect):',
|
|
1722
|
+
},
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: 'Zu Cursor hinzufügen',
|
|
1725
|
+
body: 'Ein-Klick-Button verwenden oder Folgendes in .cursor/mcp.json eintragen:',
|
|
1726
|
+
},
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: 'In .vscode/mcp.json eintragen (oder über den Befehl „MCP: Add Server“):',
|
|
1729
|
+
},
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: 'In ~/.codex/config.toml eintragen. Falls Ihre Codex-Version den OAuth-Flow nicht unterstützt, stattdessen einen API-Schlüssel-Header verwenden (siehe unten):',
|
|
1732
|
+
},
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: 'API-Schlüssel',
|
|
1735
|
+
badge: 'headless',
|
|
1736
|
+
body: 'Für CI, Skripte und Agenten ohne Browser. Der Schlüssel handelt als Sie — wie ein Passwort behandeln. Er wird nur EINMAL angezeigt.',
|
|
1737
|
+
namePlaceholder: 'Schlüsselname (z. B. ci-agent)',
|
|
1738
|
+
mint: 'Schlüssel erstellen',
|
|
1739
|
+
minting: 'Wird erstellt…',
|
|
1740
|
+
showOnce: 'Schlüssel „{{name}}“ erstellt — jetzt kopieren, er wird nicht erneut angezeigt:',
|
|
1741
|
+
done: 'Fertig — ausblenden',
|
|
1742
|
+
},
|
|
1743
|
+
},
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: "App-Marktplatz",
|
|
1705
1746
|
subtitle: "Durchsuchen Sie genehmigte Apps, die im ObjectStack-Katalog veröffentlicht wurden. Klicken Sie auf eine App, um Details zu sehen und sie in eine Ihrer Umgebungen zu installieren.",
|
package/dist/locales/en.d.ts
CHANGED
|
@@ -83,6 +83,7 @@ declare const en: {
|
|
|
83
83
|
readonly email: "Please enter a valid email address";
|
|
84
84
|
readonly url: "Please enter a valid URL";
|
|
85
85
|
readonly pattern: "{{field}} format is invalid";
|
|
86
|
+
readonly formInvalid: "Please check the highlighted fields: {{fields}}";
|
|
86
87
|
readonly unique: "{{field}} must be unique";
|
|
87
88
|
readonly type: "{{field}} must be a valid {{type}}";
|
|
88
89
|
};
|
|
@@ -1673,6 +1674,11 @@ declare const en: {
|
|
|
1673
1674
|
readonly disconnected: "Disconnected";
|
|
1674
1675
|
readonly error: "Connection Error";
|
|
1675
1676
|
};
|
|
1677
|
+
readonly stage: {
|
|
1678
|
+
readonly preview: "Preview";
|
|
1679
|
+
readonly beta: "Beta";
|
|
1680
|
+
readonly tooltip: "This platform is in preview — features may change.";
|
|
1681
|
+
};
|
|
1676
1682
|
};
|
|
1677
1683
|
readonly home: {
|
|
1678
1684
|
readonly title: "Home";
|
|
@@ -2052,6 +2058,46 @@ declare const en: {
|
|
|
2052
2058
|
};
|
|
2053
2059
|
};
|
|
2054
2060
|
};
|
|
2061
|
+
readonly connectAgent: {
|
|
2062
|
+
readonly disabled: {
|
|
2063
|
+
readonly title: "MCP is disabled on this deployment";
|
|
2064
|
+
readonly body: "The MCP surface is off (OS_MCP_SERVER_ENABLED=false), so there is nothing to connect. Ask your operator to re-enable it.";
|
|
2065
|
+
};
|
|
2066
|
+
readonly url: {
|
|
2067
|
+
readonly title: "This environment's MCP endpoint";
|
|
2068
|
+
readonly body: "Any MCP-capable AI client connects with this URL. Identity is self-serve: the deployment is its own OAuth 2.1 authorization server, so interactive clients just open a browser login — you connect as yourself, and every call runs under your own permissions and row-level security.";
|
|
2069
|
+
readonly downloadSkill: "Download SKILL.md";
|
|
2070
|
+
readonly skillHint: "The portable agent skill: teaches any skills-capable agent how to work with this environment.";
|
|
2071
|
+
};
|
|
2072
|
+
readonly claude: {
|
|
2073
|
+
readonly body: "Settings → Connectors → Add custom connector, then paste this URL. Sign in through the browser when prompted.";
|
|
2074
|
+
readonly reachability: "claude.ai (web) connects from Anthropic's servers — the deployment must be reachable over public HTTPS. Claude Desktop and local clients also reach intranet deployments.";
|
|
2075
|
+
};
|
|
2076
|
+
readonly claudeCode: {
|
|
2077
|
+
readonly body: "One command — the OAuth login opens automatically on first use:";
|
|
2078
|
+
readonly plugin: "Or install the official plugin (adds the ObjectStack skill and a guided /objectstack:connect command):";
|
|
2079
|
+
};
|
|
2080
|
+
readonly cursor: {
|
|
2081
|
+
readonly addButton: "Add to Cursor";
|
|
2082
|
+
readonly body: "Use the one-click button, or add this to .cursor/mcp.json:";
|
|
2083
|
+
};
|
|
2084
|
+
readonly vscode: {
|
|
2085
|
+
readonly body: "Add to .vscode/mcp.json (or via the MCP: Add Server command):";
|
|
2086
|
+
};
|
|
2087
|
+
readonly codex: {
|
|
2088
|
+
readonly body: "Add to ~/.codex/config.toml. If your Codex version lacks the OAuth flow, use an API key header instead (see below):";
|
|
2089
|
+
};
|
|
2090
|
+
readonly apiKey: {
|
|
2091
|
+
readonly title: "API keys";
|
|
2092
|
+
readonly badge: "headless";
|
|
2093
|
+
readonly body: "For CI, scripts, and agents without a browser. The key acts as you — treat it like a password. It is shown ONCE.";
|
|
2094
|
+
readonly namePlaceholder: "Key name (e.g. ci-agent)";
|
|
2095
|
+
readonly mint: "Create key";
|
|
2096
|
+
readonly minting: "Creating…";
|
|
2097
|
+
readonly showOnce: "Key \"{{name}}\" created — copy it now, it will not be shown again:";
|
|
2098
|
+
readonly done: "Done — hide it";
|
|
2099
|
+
};
|
|
2100
|
+
};
|
|
2055
2101
|
readonly marketplace: {
|
|
2056
2102
|
readonly title: "App Marketplace";
|
|
2057
2103
|
readonly subtitle: "Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.";
|
|
@@ -2134,6 +2180,15 @@ declare const en: {
|
|
|
2134
2180
|
readonly localUnauthorized: "Sign in to this runtime first, then try again.";
|
|
2135
2181
|
readonly localMarketplaceUnavailable: "This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.";
|
|
2136
2182
|
};
|
|
2183
|
+
readonly suggestedBindings: {
|
|
2184
|
+
readonly promptEveryone: "This app suggests granting \"{{set}}\" to all signed-in users (the Everyone position).";
|
|
2185
|
+
readonly promptGuest: "This app suggests granting \"{{set}}\" to unauthenticated visitors (the Guest position).";
|
|
2186
|
+
readonly confirm: "Grant";
|
|
2187
|
+
readonly confirming: "Granting…";
|
|
2188
|
+
readonly dismiss: "Dismiss";
|
|
2189
|
+
readonly confirmedToast: "\"{{set}}\" is now granted to {{anchor}}.";
|
|
2190
|
+
readonly dismissedToast: "Suggestion for \"{{set}}\" dismissed.";
|
|
2191
|
+
};
|
|
2137
2192
|
readonly uninstall: {
|
|
2138
2193
|
readonly confirm: "Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe cached manifest will be removed. The app will remain loaded in the running kernel until the next restart.";
|
|
2139
2194
|
readonly successInList: "Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.";
|
package/dist/locales/en.js
CHANGED
|
@@ -83,6 +83,7 @@ const en = {
|
|
|
83
83
|
email: 'Please enter a valid email address',
|
|
84
84
|
url: 'Please enter a valid URL',
|
|
85
85
|
pattern: '{{field}} format is invalid',
|
|
86
|
+
formInvalid: 'Please check the highlighted fields: {{fields}}',
|
|
86
87
|
unique: '{{field}} must be unique',
|
|
87
88
|
type: '{{field}} must be a valid {{type}}',
|
|
88
89
|
},
|
|
@@ -1689,6 +1690,12 @@ const en = {
|
|
|
1689
1690
|
disconnected: 'Disconnected',
|
|
1690
1691
|
error: 'Connection Error',
|
|
1691
1692
|
},
|
|
1693
|
+
// Platform lifecycle chip shown next to the product wordmark (PreviewBadge).
|
|
1694
|
+
stage: {
|
|
1695
|
+
preview: 'Preview',
|
|
1696
|
+
beta: 'Beta',
|
|
1697
|
+
tooltip: 'This platform is in preview — features may change.',
|
|
1698
|
+
},
|
|
1692
1699
|
},
|
|
1693
1700
|
home: {
|
|
1694
1701
|
title: 'Home',
|
|
@@ -2071,6 +2078,46 @@ const en = {
|
|
|
2071
2078
|
},
|
|
2072
2079
|
},
|
|
2073
2080
|
},
|
|
2081
|
+
connectAgent: {
|
|
2082
|
+
disabled: {
|
|
2083
|
+
title: 'MCP is disabled on this deployment',
|
|
2084
|
+
body: 'The MCP surface is off (OS_MCP_SERVER_ENABLED=false), so there is nothing to connect. Ask your operator to re-enable it.',
|
|
2085
|
+
},
|
|
2086
|
+
url: {
|
|
2087
|
+
title: 'This environment\'s MCP endpoint',
|
|
2088
|
+
body: 'Any MCP-capable AI client connects with this URL. Identity is self-serve: the deployment is its own OAuth 2.1 authorization server, so interactive clients just open a browser login — you connect as yourself, and every call runs under your own permissions and row-level security.',
|
|
2089
|
+
downloadSkill: 'Download SKILL.md',
|
|
2090
|
+
skillHint: 'The portable agent skill: teaches any skills-capable agent how to work with this environment.',
|
|
2091
|
+
},
|
|
2092
|
+
claude: {
|
|
2093
|
+
body: 'Settings → Connectors → Add custom connector, then paste this URL. Sign in through the browser when prompted.',
|
|
2094
|
+
reachability: 'claude.ai (web) connects from Anthropic\'s servers — the deployment must be reachable over public HTTPS. Claude Desktop and local clients also reach intranet deployments.',
|
|
2095
|
+
},
|
|
2096
|
+
claudeCode: {
|
|
2097
|
+
body: 'One command — the OAuth login opens automatically on first use:',
|
|
2098
|
+
plugin: 'Or install the official plugin (adds the ObjectStack skill and a guided /objectstack:connect command):',
|
|
2099
|
+
},
|
|
2100
|
+
cursor: {
|
|
2101
|
+
addButton: 'Add to Cursor',
|
|
2102
|
+
body: 'Use the one-click button, or add this to .cursor/mcp.json:',
|
|
2103
|
+
},
|
|
2104
|
+
vscode: {
|
|
2105
|
+
body: 'Add to .vscode/mcp.json (or via the MCP: Add Server command):',
|
|
2106
|
+
},
|
|
2107
|
+
codex: {
|
|
2108
|
+
body: 'Add to ~/.codex/config.toml. If your Codex version lacks the OAuth flow, use an API key header instead (see below):',
|
|
2109
|
+
},
|
|
2110
|
+
apiKey: {
|
|
2111
|
+
title: 'API keys',
|
|
2112
|
+
badge: 'headless',
|
|
2113
|
+
body: 'For CI, scripts, and agents without a browser. The key acts as you — treat it like a password. It is shown ONCE.',
|
|
2114
|
+
namePlaceholder: 'Key name (e.g. ci-agent)',
|
|
2115
|
+
mint: 'Create key',
|
|
2116
|
+
minting: 'Creating…',
|
|
2117
|
+
showOnce: 'Key "{{name}}" created — copy it now, it will not be shown again:',
|
|
2118
|
+
done: 'Done — hide it',
|
|
2119
|
+
},
|
|
2120
|
+
},
|
|
2074
2121
|
marketplace: {
|
|
2075
2122
|
title: 'App Marketplace',
|
|
2076
2123
|
subtitle: 'Browse approved apps published to the ObjectStack catalog. Click an app to view details and install it into one of your environments.',
|
|
@@ -2153,6 +2200,18 @@ const en = {
|
|
|
2153
2200
|
localUnauthorized: 'Sign in to this runtime first, then try again.',
|
|
2154
2201
|
localMarketplaceUnavailable: 'This runtime has no OS_CLOUD_URL configured, so the marketplace catalog is unreachable.',
|
|
2155
2202
|
},
|
|
2203
|
+
// ADR-0090 D5/D9 — a package's isDefault permission set is an
|
|
2204
|
+
// install-time suggestion to bind it to the everyone/guest position;
|
|
2205
|
+
// the admin confirms here, the server never auto-binds.
|
|
2206
|
+
suggestedBindings: {
|
|
2207
|
+
promptEveryone: 'This app suggests granting "{{set}}" to all signed-in users (the Everyone position).',
|
|
2208
|
+
promptGuest: 'This app suggests granting "{{set}}" to unauthenticated visitors (the Guest position).',
|
|
2209
|
+
confirm: 'Grant',
|
|
2210
|
+
confirming: 'Granting…',
|
|
2211
|
+
dismiss: 'Dismiss',
|
|
2212
|
+
confirmedToast: '"{{set}}" is now granted to {{anchor}}.',
|
|
2213
|
+
dismissedToast: 'Suggestion for "{{set}}" dismissed.',
|
|
2214
|
+
},
|
|
2156
2215
|
uninstall: {
|
|
2157
2216
|
confirm: 'Uninstall {{manifestId}} v{{version}} from this runtime?\n\nThe cached manifest will be removed. The app will remain loaded in the running kernel until the next restart.',
|
|
2158
2217
|
successInList: 'Removed {{manifestId}}. Restart the runtime to fully unload it from the running kernel.',
|
package/dist/locales/es.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ declare const es: {
|
|
|
80
80
|
email: string;
|
|
81
81
|
url: string;
|
|
82
82
|
pattern: string;
|
|
83
|
+
formInvalid: string;
|
|
83
84
|
unique: string;
|
|
84
85
|
type: string;
|
|
85
86
|
};
|
|
@@ -1700,6 +1701,46 @@ declare const es: {
|
|
|
1700
1701
|
};
|
|
1701
1702
|
};
|
|
1702
1703
|
};
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
body: string;
|
|
1708
|
+
};
|
|
1709
|
+
url: {
|
|
1710
|
+
title: string;
|
|
1711
|
+
body: string;
|
|
1712
|
+
downloadSkill: string;
|
|
1713
|
+
skillHint: string;
|
|
1714
|
+
};
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: string;
|
|
1717
|
+
reachability: string;
|
|
1718
|
+
};
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: string;
|
|
1721
|
+
plugin: string;
|
|
1722
|
+
};
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: string;
|
|
1725
|
+
body: string;
|
|
1726
|
+
};
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: string;
|
|
1729
|
+
};
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: string;
|
|
1732
|
+
};
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: string;
|
|
1735
|
+
badge: string;
|
|
1736
|
+
body: string;
|
|
1737
|
+
namePlaceholder: string;
|
|
1738
|
+
mint: string;
|
|
1739
|
+
minting: string;
|
|
1740
|
+
showOnce: string;
|
|
1741
|
+
done: string;
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: string;
|
|
1705
1746
|
subtitle: string;
|
package/dist/locales/es.js
CHANGED
|
@@ -80,6 +80,7 @@ const es = {
|
|
|
80
80
|
email: "Por favor, introduzca un correo electrónico válido",
|
|
81
81
|
url: "Por favor, introduzca una URL válida",
|
|
82
82
|
pattern: "El formato de {{field}} no es válido",
|
|
83
|
+
formInvalid: "Por favor, revise los campos resaltados: {{fields}}",
|
|
83
84
|
unique: "{{field}} debe ser único",
|
|
84
85
|
type: "{{field}} debe ser un {{type}} válido",
|
|
85
86
|
},
|
|
@@ -1700,6 +1701,46 @@ const es = {
|
|
|
1700
1701
|
},
|
|
1701
1702
|
},
|
|
1702
1703
|
},
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: 'MCP está deshabilitado en esta implementación',
|
|
1707
|
+
body: 'La superficie MCP está apagada (OS_MCP_SERVER_ENABLED=false). Pida a su operador que la vuelva a habilitar.',
|
|
1708
|
+
},
|
|
1709
|
+
url: {
|
|
1710
|
+
title: 'Endpoint MCP de este entorno',
|
|
1711
|
+
body: 'Cualquier cliente de IA compatible con MCP se conecta con esta URL. La identidad es autoservicio: la implementación es su propio servidor de autorización OAuth 2.1 — inicia sesión como usted mismo y cada llamada corre bajo sus permisos y seguridad a nivel de fila.',
|
|
1712
|
+
downloadSkill: 'Descargar SKILL.md',
|
|
1713
|
+
skillHint: 'La skill portátil del agente: enseña a cualquier agente compatible cómo trabajar con este entorno.',
|
|
1714
|
+
},
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: 'Configuración → Conectores → Añadir conector personalizado, pegue esta URL e inicie sesión en el navegador.',
|
|
1717
|
+
reachability: 'claude.ai (web) se conecta desde los servidores de Anthropic — la implementación debe ser accesible por HTTPS público. Claude Desktop y los clientes locales también alcanzan implementaciones de intranet.',
|
|
1718
|
+
},
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: 'Un comando — el inicio de sesión OAuth se abre automáticamente en el primer uso:',
|
|
1721
|
+
plugin: 'O instale el plugin oficial (añade la skill de ObjectStack y el comando guiado /objectstack:connect):',
|
|
1722
|
+
},
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: 'Añadir a Cursor',
|
|
1725
|
+
body: 'Use el botón de un clic o añada esto a .cursor/mcp.json:',
|
|
1726
|
+
},
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: 'Añadir a .vscode/mcp.json (o mediante el comando MCP: Add Server):',
|
|
1729
|
+
},
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: 'Añadir a ~/.codex/config.toml. Si su versión de Codex no admite el flujo OAuth, use una cabecera de clave API (ver abajo):',
|
|
1732
|
+
},
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: 'Claves API',
|
|
1735
|
+
badge: 'headless',
|
|
1736
|
+
body: 'Para CI, scripts y agentes sin navegador. La clave actúa como usted — trátela como una contraseña. Se muestra UNA sola vez.',
|
|
1737
|
+
namePlaceholder: 'Nombre de la clave (p. ej. ci-agent)',
|
|
1738
|
+
mint: 'Crear clave',
|
|
1739
|
+
minting: 'Creando…',
|
|
1740
|
+
showOnce: 'Clave «{{name}}» creada — cópiela ahora, no se volverá a mostrar:',
|
|
1741
|
+
done: 'Listo — ocultar',
|
|
1742
|
+
},
|
|
1743
|
+
},
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: "Marketplace de aplicaciones",
|
|
1705
1746
|
subtitle: "Explore aplicaciones aprobadas publicadas en el catálogo de ObjectStack. Haga clic en una aplicación para ver detalles e instalarla en uno de sus entornos.",
|
package/dist/locales/fr.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ declare const fr: {
|
|
|
80
80
|
email: string;
|
|
81
81
|
url: string;
|
|
82
82
|
pattern: string;
|
|
83
|
+
formInvalid: string;
|
|
83
84
|
unique: string;
|
|
84
85
|
type: string;
|
|
85
86
|
};
|
|
@@ -1700,6 +1701,46 @@ declare const fr: {
|
|
|
1700
1701
|
};
|
|
1701
1702
|
};
|
|
1702
1703
|
};
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
body: string;
|
|
1708
|
+
};
|
|
1709
|
+
url: {
|
|
1710
|
+
title: string;
|
|
1711
|
+
body: string;
|
|
1712
|
+
downloadSkill: string;
|
|
1713
|
+
skillHint: string;
|
|
1714
|
+
};
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: string;
|
|
1717
|
+
reachability: string;
|
|
1718
|
+
};
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: string;
|
|
1721
|
+
plugin: string;
|
|
1722
|
+
};
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: string;
|
|
1725
|
+
body: string;
|
|
1726
|
+
};
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: string;
|
|
1729
|
+
};
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: string;
|
|
1732
|
+
};
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: string;
|
|
1735
|
+
badge: string;
|
|
1736
|
+
body: string;
|
|
1737
|
+
namePlaceholder: string;
|
|
1738
|
+
mint: string;
|
|
1739
|
+
minting: string;
|
|
1740
|
+
showOnce: string;
|
|
1741
|
+
done: string;
|
|
1742
|
+
};
|
|
1743
|
+
};
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: string;
|
|
1705
1746
|
subtitle: string;
|
package/dist/locales/fr.js
CHANGED
|
@@ -80,6 +80,7 @@ const fr = {
|
|
|
80
80
|
email: "Veuillez saisir une adresse e-mail valide",
|
|
81
81
|
url: "Veuillez saisir une URL valide",
|
|
82
82
|
pattern: "Le format de {{field}} est invalide",
|
|
83
|
+
formInvalid: "Veuillez vérifier les champs en surbrillance : {{fields}}",
|
|
83
84
|
unique: "{{field}} doit être unique",
|
|
84
85
|
type: "{{field}} doit être un {{type}} valide",
|
|
85
86
|
},
|
|
@@ -1700,6 +1701,46 @@ const fr = {
|
|
|
1700
1701
|
},
|
|
1701
1702
|
},
|
|
1702
1703
|
},
|
|
1704
|
+
connectAgent: {
|
|
1705
|
+
disabled: {
|
|
1706
|
+
title: 'MCP est désactivé sur ce déploiement',
|
|
1707
|
+
body: 'La surface MCP est désactivée (OS_MCP_SERVER_ENABLED=false). Demandez à votre opérateur de la réactiver.',
|
|
1708
|
+
},
|
|
1709
|
+
url: {
|
|
1710
|
+
title: 'Endpoint MCP de cet environnement',
|
|
1711
|
+
body: 'Tout client IA compatible MCP se connecte avec cette URL. L’identité est en libre-service : le déploiement est son propre serveur d’autorisation OAuth 2.1 — vous vous connectez en votre nom, et chaque appel s’exécute sous vos permissions et la sécurité au niveau des lignes.',
|
|
1712
|
+
downloadSkill: 'Télécharger SKILL.md',
|
|
1713
|
+
skillHint: 'La skill d’agent portable : apprend à tout agent compatible à travailler avec cet environnement.',
|
|
1714
|
+
},
|
|
1715
|
+
claude: {
|
|
1716
|
+
body: 'Paramètres → Connecteurs → Ajouter un connecteur personnalisé, collez cette URL puis connectez-vous dans le navigateur.',
|
|
1717
|
+
reachability: 'claude.ai (web) se connecte depuis les serveurs d’Anthropic — le déploiement doit être accessible en HTTPS public. Claude Desktop et les clients locaux atteignent aussi les déploiements intranet.',
|
|
1718
|
+
},
|
|
1719
|
+
claudeCode: {
|
|
1720
|
+
body: 'Une seule commande — la connexion OAuth s’ouvre automatiquement à la première utilisation :',
|
|
1721
|
+
plugin: 'Ou installez le plugin officiel (ajoute la skill ObjectStack et la commande guidée /objectstack:connect) :',
|
|
1722
|
+
},
|
|
1723
|
+
cursor: {
|
|
1724
|
+
addButton: 'Ajouter à Cursor',
|
|
1725
|
+
body: 'Utilisez le bouton en un clic, ou ajoutez ceci à .cursor/mcp.json :',
|
|
1726
|
+
},
|
|
1727
|
+
vscode: {
|
|
1728
|
+
body: 'À ajouter dans .vscode/mcp.json (ou via la commande MCP: Add Server) :',
|
|
1729
|
+
},
|
|
1730
|
+
codex: {
|
|
1731
|
+
body: 'À ajouter dans ~/.codex/config.toml. Si votre version de Codex ne gère pas le flux OAuth, utilisez un en-tête de clé API (voir ci-dessous) :',
|
|
1732
|
+
},
|
|
1733
|
+
apiKey: {
|
|
1734
|
+
title: 'Clés API',
|
|
1735
|
+
badge: 'headless',
|
|
1736
|
+
body: 'Pour la CI, les scripts et les agents sans navigateur. La clé agit en votre nom — traitez-la comme un mot de passe. Elle n’est affichée qu’UNE fois.',
|
|
1737
|
+
namePlaceholder: 'Nom de la clé (ex. ci-agent)',
|
|
1738
|
+
mint: 'Créer la clé',
|
|
1739
|
+
minting: 'Création…',
|
|
1740
|
+
showOnce: 'Clé « {{name}} » créée — copiez-la maintenant, elle ne sera plus affichée :',
|
|
1741
|
+
done: 'Terminé — masquer',
|
|
1742
|
+
},
|
|
1743
|
+
},
|
|
1703
1744
|
marketplace: {
|
|
1704
1745
|
title: "Marketplace d'applications",
|
|
1705
1746
|
subtitle: "Parcourez les applications approuvées publiées dans le catalogue ObjectStack. Cliquez sur une application pour voir les détails et l'installer dans l'un de vos environnements.",
|