@agent-native/core 0.92.5 → 0.92.6
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +13 -0
- package/corpus/core/docs/content/template-assets.mdx +139 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +96 -6
- package/corpus/core/src/client/AssistantChat.tsx +127 -15
- package/corpus/core/src/client/chat/tool-call-display.tsx +9 -3
- package/corpus/core/src/client/org/TeamPage.tsx +274 -177
- package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -6
- package/corpus/core/src/client/settings/SettingsPanel.tsx +1 -1
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +49 -1
- package/corpus/core/src/demo/actions/toggle-demo-mode.ts +2 -2
- package/corpus/core/src/demo/config.ts +3 -3
- package/corpus/core/src/demo/redact.ts +720 -0
- package/corpus/core/src/extensions/url-safety.ts +13 -1
- package/corpus/core/src/localization/default-messages.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +7 -0
- package/corpus/templates/analytics/AGENTS.md +6 -3
- package/corpus/templates/analytics/changelog/2026-07-09-uptime-monitors-use-scheduled-workers-in-production-serverless.md +6 -0
- package/corpus/templates/analytics/docs/uptime-monitoring.md +5 -0
- package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +14 -2
- package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +35 -0
- package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +19 -0
- package/corpus/templates/assets/AGENTS.md +13 -0
- package/corpus/templates/assets/actions/_generation-preset-settings.ts +73 -0
- package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +63 -0
- package/corpus/templates/assets/actions/create-generation-preset.ts +22 -8
- package/corpus/templates/assets/actions/duplicate-library.ts +49 -1
- package/corpus/templates/assets/actions/generate-image-batch.ts +14 -1
- package/corpus/templates/assets/actions/generate-image.ts +195 -26
- package/corpus/templates/assets/actions/import-asset-from-url.ts +323 -0
- package/corpus/templates/assets/actions/list-generation-presets.ts +1 -1
- package/corpus/templates/assets/actions/rerun-generation-run.ts +37 -0
- package/corpus/templates/assets/actions/update-generation-preset.ts +19 -1
- package/corpus/templates/assets/app/i18n/ar-SA.ts +1 -0
- package/corpus/templates/assets/app/i18n/de-DE.ts +1 -0
- package/corpus/templates/assets/app/i18n/es-ES.ts +1 -0
- package/corpus/templates/assets/app/i18n/fr-FR.ts +1 -0
- package/corpus/templates/assets/app/i18n/hi-IN.ts +1 -0
- package/corpus/templates/assets/app/i18n/ja-JP.ts +1 -0
- package/corpus/templates/assets/app/i18n/ko-KR.ts +1 -0
- package/corpus/templates/assets/app/i18n/pt-BR.ts +1 -0
- package/corpus/templates/assets/app/i18n/zh-CN.ts +1 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +41 -0
- package/corpus/templates/assets/app/i18n-data.ts +93 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +66 -11
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +959 -24
- package/corpus/templates/assets/changelog/2026-07-07-preset-skeleton-controls-fit-correctly-on-narrower-edit-page.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-09-import-reference-images-from-url.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-09-preset-reference-board.md +6 -0
- package/corpus/templates/assets/server/handlers/assets.ts +7 -27
- package/corpus/templates/assets/server/lib/generation.ts +83 -2
- package/corpus/templates/assets/server/lib/preset-chat-context.ts +17 -4
- package/corpus/templates/assets/server/lib/preset-references.ts +182 -0
- package/corpus/templates/assets/server/lib/upload-validation.ts +38 -0
- package/corpus/templates/assets/shared/api.ts +20 -0
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +6 -0
- package/corpus/templates/calendar/actions/create-event.ts +8 -2
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +22 -7
- package/corpus/templates/calendar/changelog/2026-07-09-calendar-events-with-guests-now-automatically-get-a-google-m.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-09-new-events-now-mark-the-creator-rsvp-as-yes.md +6 -0
- package/corpus/templates/calendar/server/handlers/events.ts +9 -2
- package/corpus/templates/calendar/server/lib/event-video-conferencing.ts +58 -0
- package/corpus/templates/calendar/server/lib/google-calendar.ts +1 -0
- package/corpus/templates/clips/changelog/2026-07-09-meeting-reminder-popovers-can-now-be-dismissed-with-a-top-le.md +6 -0
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +3 -1
- package/corpus/templates/clips/desktop/src/styles.css +13 -9
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +5 -2
- package/dist/agent/production-agent.d.ts +34 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +58 -5
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +3 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +96 -15
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +5 -1
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +32 -13
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/settings/DemoModeSection.d.ts +3 -3
- package/dist/client/settings/DemoModeSection.js +4 -4
- package/dist/client/settings/DemoModeSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.js +1 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +38 -2
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/demo/actions/toggle-demo-mode.js +2 -2
- package/dist/demo/actions/toggle-demo-mode.js.map +1 -1
- package/dist/demo/config.js +3 -3
- package/dist/demo/config.js.map +1 -1
- package/dist/demo/redact.d.ts +1 -1
- package/dist/demo/redact.d.ts.map +1 -1
- package/dist/demo/redact.js +0 -0
- package/dist/demo/redact.js.map +1 -1
- package/dist/extensions/url-safety.d.ts +5 -0
- package/dist/extensions/url-safety.d.ts.map +1 -1
- package/dist/extensions/url-safety.js +10 -0
- package/dist/extensions/url-safety.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/localization/default-messages.d.ts +7 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +7 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/templates/default/app/i18n/ar-SA.ts +7 -0
- package/dist/templates/default/app/i18n/de-DE.ts +7 -0
- package/dist/templates/default/app/i18n/en-US.ts +7 -0
- package/dist/templates/default/app/i18n/es-ES.ts +7 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +7 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +7 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +7 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +7 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +7 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +7 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +7 -0
- package/docs/content/template-assets.mdx +139 -0
- package/package.json +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +7 -0
- package/src/templates/default/app/i18n/de-DE.ts +7 -0
- package/src/templates/default/app/i18n/en-US.ts +7 -0
- package/src/templates/default/app/i18n/es-ES.ts +7 -0
- package/src/templates/default/app/i18n/fr-FR.ts +7 -0
- package/src/templates/default/app/i18n/hi-IN.ts +7 -0
- package/src/templates/default/app/i18n/ja-JP.ts +7 -0
- package/src/templates/default/app/i18n/ko-KR.ts +7 -0
- package/src/templates/default/app/i18n/pt-BR.ts +7 -0
- package/src/templates/default/app/i18n/zh-CN.ts +7 -0
- package/src/templates/default/app/i18n/zh-TW.ts +7 -0
|
@@ -237,12 +237,19 @@ export async function createSsrfSafeDispatcher() {
|
|
|
237
237
|
* Throws an Error whose message starts with "SSRF blocked:" when a target
|
|
238
238
|
* (initial or via redirect) resolves to a private/internal address, or when the
|
|
239
239
|
* redirect limit is exceeded. Otherwise returns the final Response.
|
|
240
|
+
*
|
|
241
|
+
* `httpsOnly` extends the per-hop validation to the URL scheme: redirects are
|
|
242
|
+
* followed only to `https:` targets, so an HTTPS-only caller cannot be
|
|
243
|
+
* downgraded to plain HTTP by a 30x from the (untrusted) origin.
|
|
240
244
|
*/
|
|
241
245
|
export async function ssrfSafeFetch(url, init = {}, options = {}) {
|
|
242
246
|
const maxRedirects = options.maxRedirects ?? 3;
|
|
243
247
|
const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;
|
|
244
248
|
let currentUrl = url;
|
|
245
249
|
for (let hop = 0; hop <= maxRedirects; hop++) {
|
|
250
|
+
if (options.httpsOnly && new URL(currentUrl).protocol !== "https:") {
|
|
251
|
+
throw new Error(`SSRF blocked: refusing to fetch non-HTTPS address (${currentUrl})`);
|
|
252
|
+
}
|
|
246
253
|
if (await isBlockedExtensionUrlWithDns(currentUrl)) {
|
|
247
254
|
throw new Error(`SSRF blocked: refusing to fetch private/internal address (${currentUrl})`);
|
|
248
255
|
}
|
|
@@ -257,6 +264,9 @@ export async function ssrfSafeFetch(url, init = {}, options = {}) {
|
|
|
257
264
|
const location = response.headers.get("location");
|
|
258
265
|
if (!location)
|
|
259
266
|
return response;
|
|
267
|
+
// Drain the redirect body so the hop's connection is released instead
|
|
268
|
+
// of being held until GC.
|
|
269
|
+
await response.body?.cancel().catch(() => { });
|
|
260
270
|
currentUrl = new URL(location, currentUrl).href;
|
|
261
271
|
continue;
|
|
262
272
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-safety.js","sourceRoot":"","sources":["../../src/extensions/url-safety.ts"],"names":[],"mappings":"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","sourcesContent":["const METADATA_HOSTS = [\n \"metadata.google.internal\",\n \"metadata.google.internal.\",\n];\n\nconst DNS_REBIND_SUFFIXES = [\n \".nip.io\",\n \".sslip.io\",\n \".xip.io\",\n \".localtest.me\",\n \".lvh.me\",\n];\n\nfunction isPrivateIpv4(a: number, b: number, c = 0, d = 0): boolean {\n if (![a, b, c, d].every((part) => part >= 0 && part <= 255)) return true;\n if (a === 127) return true;\n if (a === 10) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 192 && b === 168) return true;\n if (a === 169 && b === 254) return true;\n if (a === 0) return true;\n if (a === 100 && b >= 64 && b <= 127) return true;\n if (a === 192 && b === 0) return true;\n if (a === 198 && (b === 18 || b === 19)) return true;\n if (a === 192 && b === 0 && c === 2) return true;\n if (a === 198 && b === 51 && c === 100) return true;\n if (a === 203 && b === 0 && c === 113) return true;\n if (a >= 224) return true;\n return false;\n}\n\nfunction isPrivateIpv4MappedHex(host: string): boolean {\n const mapped = host.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);\n if (!mapped) return false;\n const high = Number.parseInt(mapped[1], 16);\n const low = Number.parseInt(mapped[2], 16);\n if (high < 0 || high > 0xffff || low < 0 || low > 0xffff) return false;\n const a = (high >> 8) & 0xff;\n const b = high & 0xff;\n const c = (low >> 8) & 0xff;\n const d = low & 0xff;\n return isPrivateIpv4(a, b, c, d);\n}\n\nfunction isPrivateHost(hostname: string): boolean {\n const host = hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (\n host === \"localhost\" ||\n host === \"::1\" ||\n host === \"::0\" ||\n host === \"::\"\n ) {\n return true;\n }\n if (METADATA_HOSTS.includes(host)) return true;\n\n // IPv6 ULA/link-local/multicast.\n if (/^f[cd]/.test(host) || /^fe[89ab]/.test(host)) return true;\n if (/^ff/i.test(host)) return true;\n\n // IPv4-mapped IPv6. URL parsing may preserve dotted form in some runtimes\n // or normalize it to hex, e.g. [::ffff:127.0.0.1] -> ::ffff:7f00:1.\n const v4mappedDotted = host.match(/^::ffff:(\\d+\\.\\d+\\.\\d+\\.\\d+)$/);\n if (v4mappedDotted) {\n const [a, b, c, d] = v4mappedDotted[1].split(\".\").map(Number);\n if (isPrivateIpv4(a, b, c, d)) return true;\n }\n if (isPrivateIpv4MappedHex(host)) return true;\n\n // Dotted IPv4. URL parsing normalizes shorthand/octal/hex IPv4 forms to\n // dotted decimal before we reach this point.\n const parts = host.split(\".\");\n if (parts.length === 4 && parts.every((p) => /^\\d+$/.test(p))) {\n const [a, b, c, d] = parts.map(Number);\n if (isPrivateIpv4(a, b, c, d)) return true;\n }\n\n // Decimal integer IPv4.\n if (/^\\d+$/.test(host)) {\n const num = Number(host);\n if (num >= 0 && num <= 0xffffffff) {\n const a = (num >>> 24) & 0xff;\n const b = (num >>> 16) & 0xff;\n const c = (num >>> 8) & 0xff;\n const d = num & 0xff;\n if (isPrivateIpv4(a, b, c, d)) return true;\n }\n }\n\n return false;\n}\n\nexport function isBlockedExtensionUrl(url: string): boolean {\n try {\n const parsed = new URL(url);\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return true;\n }\n const host = parsed.hostname.toLowerCase();\n if (isPrivateHost(host)) return true;\n if (\n DNS_REBIND_SUFFIXES.some((suffix) => {\n const bare = suffix.slice(1);\n return host === bare || host.endsWith(suffix);\n })\n ) {\n return true;\n }\n } catch {\n return true;\n }\n return false;\n}\n\nfunction isIpLiteralHost(hostname: string): boolean {\n const host = hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (host.includes(\":\")) return true;\n const parts = host.split(\".\");\n return parts.length === 4 && parts.every((p) => /^\\d+$/.test(p));\n}\n\n/**\n * Async SSRF guard for environments that can resolve DNS. The synchronous\n * guard catches literals and known rebinding domains; this closes the common\n * \"public hostname resolves to a private address\" gap before dispatch.\n */\nexport async function isBlockedExtensionUrlWithDns(\n url: string,\n): Promise<boolean> {\n if (isBlockedExtensionUrl(url)) return true;\n\n let hostname: string;\n try {\n hostname = new URL(url).hostname.toLowerCase();\n } catch {\n return true;\n }\n if (!hostname || isIpLiteralHost(hostname)) return false;\n\n try {\n const { lookup } = await import(\"node:dns/promises\");\n const records = await lookup(hostname, { all: true, verbatim: true });\n return records.some((record) => isPrivateHost(record.address));\n } catch {\n // Some edge runtimes do not expose DNS lookup. Keep the deterministic\n // parser-based protections instead of failing every outbound request.\n return false;\n }\n}\n\n/**\n * Build an undici Dispatcher whose connect-time DNS lookup runs through a\n * private-IP guard. This closes the TOCTOU gap where:\n * 1. We resolve hostname → public IP and pass.\n * 2. Between that lookup and the actual connect, DNS rebinding flips the\n * record to a private IP.\n * 3. fetch() resolves again and connects to the private IP.\n *\n * With a custom dispatcher, the same lookup that produces the IP also gates\n * the connect: if the IP is in the private set, the connect throws.\n *\n * Returns `null` if undici / node:dns are not available (e.g. some edge\n * runtimes); the caller should fall back to the regular `fetch` path —\n * `isBlockedExtensionUrlWithDns` will still have caught most rebinding cases.\n */\nexport async function createSsrfSafeDispatcher(): Promise<unknown | null> {\n // Keep the optional undici import opaque to Vite/Rolldown. A static\n // `import(\"undici\")` makes browser builds try to resolve and bundle undici\n // even though this dispatcher is only useful in Node server runtimes.\n let undici: any;\n let dnsModule: any;\n try {\n const runtimeImport = new Function(\n \"specifier\",\n \"return import(specifier)\",\n ) as (specifier: string) => Promise<any>;\n undici = await runtimeImport(\"undici\");\n dnsModule = await import(\"node:dns\");\n } catch {\n return null;\n }\n\n const { Agent } = undici;\n const { lookup } = dnsModule;\n if (!Agent || !lookup) return null;\n\n return new Agent({\n connect: {\n // Override DNS lookup at connect time so the IP we hand to undici's\n // socket is the one we authorized. Reject any record in the private\n // set BEFORE the TCP handshake.\n lookup: (\n hostname: string,\n options: any,\n callback: (\n err: NodeJS.ErrnoException | null,\n address?: string | { address: string; family: number }[],\n family?: number,\n ) => void,\n ) => {\n lookup(\n hostname,\n { all: true, verbatim: true },\n (err: NodeJS.ErrnoException | null, addresses: any) => {\n if (err) return callback(err);\n const list: { address: string; family: number }[] = Array.isArray(\n addresses,\n )\n ? addresses\n : [{ address: addresses, family: 4 }];\n for (const record of list) {\n if (isPrivateHost(record.address)) {\n const e = new Error(\n `Connect blocked: ${hostname} resolved to private address ${record.address}`,\n ) as NodeJS.ErrnoException;\n e.code = \"EAI_BLOCKED\";\n return callback(e);\n }\n }\n // Mirror Node's lookup behavior: when `all` is true, return the\n // array; otherwise the first entry. undici's connect honors\n // `options.all`.\n if (options && options.all) {\n return callback(null, list as any);\n }\n const first = list[0];\n return callback(null, first.address, first.family);\n },\n );\n },\n },\n });\n}\n\n/**\n * SSRF-safe `fetch` for any server-side request to a user/agent-supplied URL.\n *\n * Applies the same protections the extension proxy uses, so every call site\n * that fetches an untrusted URL gets them without re-implementing the loop:\n * 1. Pre-flight DNS-aware private-address check (isBlockedExtensionUrlWithDns)\n * on the initial URL and on every redirect hop.\n * 2. A connect-time dispatcher that re-checks the resolved IP at TCP-connect\n * time (closes the DNS-rebinding TOCTOU) when undici is available.\n * 3. Manual redirect handling — a public URL cannot 30x-redirect into the\n * private network because each hop is re-validated before it is followed.\n *\n * Throws an Error whose message starts with \"SSRF blocked:\" when a target\n * (initial or via redirect) resolves to a private/internal address, or when the\n * redirect limit is exceeded. Otherwise returns the final Response.\n */\nexport async function ssrfSafeFetch(\n url: string,\n init: RequestInit = {},\n options: { maxRedirects?: number } = {},\n): Promise<Response> {\n const maxRedirects = options.maxRedirects ?? 3;\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n\n let currentUrl = url;\n for (let hop = 0; hop <= maxRedirects; hop++) {\n if (await isBlockedExtensionUrlWithDns(currentUrl)) {\n throw new Error(\n `SSRF blocked: refusing to fetch private/internal address (${currentUrl})`,\n );\n }\n const fetchOpts: RequestInit & { dispatcher?: unknown } = {\n ...init,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOpts.dispatcher = dispatcher;\n\n const response = await fetch(currentUrl, fetchOpts);\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n if (!location) return response;\n currentUrl = new URL(location, currentUrl).href;\n continue;\n }\n return response;\n }\n throw new Error(\n `SSRF blocked: too many redirects (>${maxRedirects}) while fetching ${url}`,\n );\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Legacy aliases — predate the Tools → Extensions rename. Templates import\n// these via the legacy `@agent-native/core/tools/url-safety` subpath; keep\n// the names exported so they keep resolving until every consumer updates.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { isBlockedExtensionUrl as isBlockedToolUrl };\nexport { isBlockedExtensionUrlWithDns as isBlockedToolUrlWithDns };\nexport { ssrfSafeFetch as ssrfSafeToolFetch };\n"]}
|
|
1
|
+
{"version":3,"file":"url-safety.js","sourceRoot":"","sources":["../../src/extensions/url-safety.ts"],"names":[],"mappings":"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","sourcesContent":["const METADATA_HOSTS = [\n \"metadata.google.internal\",\n \"metadata.google.internal.\",\n];\n\nconst DNS_REBIND_SUFFIXES = [\n \".nip.io\",\n \".sslip.io\",\n \".xip.io\",\n \".localtest.me\",\n \".lvh.me\",\n];\n\nfunction isPrivateIpv4(a: number, b: number, c = 0, d = 0): boolean {\n if (![a, b, c, d].every((part) => part >= 0 && part <= 255)) return true;\n if (a === 127) return true;\n if (a === 10) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 192 && b === 168) return true;\n if (a === 169 && b === 254) return true;\n if (a === 0) return true;\n if (a === 100 && b >= 64 && b <= 127) return true;\n if (a === 192 && b === 0) return true;\n if (a === 198 && (b === 18 || b === 19)) return true;\n if (a === 192 && b === 0 && c === 2) return true;\n if (a === 198 && b === 51 && c === 100) return true;\n if (a === 203 && b === 0 && c === 113) return true;\n if (a >= 224) return true;\n return false;\n}\n\nfunction isPrivateIpv4MappedHex(host: string): boolean {\n const mapped = host.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);\n if (!mapped) return false;\n const high = Number.parseInt(mapped[1], 16);\n const low = Number.parseInt(mapped[2], 16);\n if (high < 0 || high > 0xffff || low < 0 || low > 0xffff) return false;\n const a = (high >> 8) & 0xff;\n const b = high & 0xff;\n const c = (low >> 8) & 0xff;\n const d = low & 0xff;\n return isPrivateIpv4(a, b, c, d);\n}\n\nfunction isPrivateHost(hostname: string): boolean {\n const host = hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (\n host === \"localhost\" ||\n host === \"::1\" ||\n host === \"::0\" ||\n host === \"::\"\n ) {\n return true;\n }\n if (METADATA_HOSTS.includes(host)) return true;\n\n // IPv6 ULA/link-local/multicast.\n if (/^f[cd]/.test(host) || /^fe[89ab]/.test(host)) return true;\n if (/^ff/i.test(host)) return true;\n\n // IPv4-mapped IPv6. URL parsing may preserve dotted form in some runtimes\n // or normalize it to hex, e.g. [::ffff:127.0.0.1] -> ::ffff:7f00:1.\n const v4mappedDotted = host.match(/^::ffff:(\\d+\\.\\d+\\.\\d+\\.\\d+)$/);\n if (v4mappedDotted) {\n const [a, b, c, d] = v4mappedDotted[1].split(\".\").map(Number);\n if (isPrivateIpv4(a, b, c, d)) return true;\n }\n if (isPrivateIpv4MappedHex(host)) return true;\n\n // Dotted IPv4. URL parsing normalizes shorthand/octal/hex IPv4 forms to\n // dotted decimal before we reach this point.\n const parts = host.split(\".\");\n if (parts.length === 4 && parts.every((p) => /^\\d+$/.test(p))) {\n const [a, b, c, d] = parts.map(Number);\n if (isPrivateIpv4(a, b, c, d)) return true;\n }\n\n // Decimal integer IPv4.\n if (/^\\d+$/.test(host)) {\n const num = Number(host);\n if (num >= 0 && num <= 0xffffffff) {\n const a = (num >>> 24) & 0xff;\n const b = (num >>> 16) & 0xff;\n const c = (num >>> 8) & 0xff;\n const d = num & 0xff;\n if (isPrivateIpv4(a, b, c, d)) return true;\n }\n }\n\n return false;\n}\n\nexport function isBlockedExtensionUrl(url: string): boolean {\n try {\n const parsed = new URL(url);\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return true;\n }\n const host = parsed.hostname.toLowerCase();\n if (isPrivateHost(host)) return true;\n if (\n DNS_REBIND_SUFFIXES.some((suffix) => {\n const bare = suffix.slice(1);\n return host === bare || host.endsWith(suffix);\n })\n ) {\n return true;\n }\n } catch {\n return true;\n }\n return false;\n}\n\nfunction isIpLiteralHost(hostname: string): boolean {\n const host = hostname.toLowerCase().replace(/^\\[|\\]$/g, \"\");\n if (host.includes(\":\")) return true;\n const parts = host.split(\".\");\n return parts.length === 4 && parts.every((p) => /^\\d+$/.test(p));\n}\n\n/**\n * Async SSRF guard for environments that can resolve DNS. The synchronous\n * guard catches literals and known rebinding domains; this closes the common\n * \"public hostname resolves to a private address\" gap before dispatch.\n */\nexport async function isBlockedExtensionUrlWithDns(\n url: string,\n): Promise<boolean> {\n if (isBlockedExtensionUrl(url)) return true;\n\n let hostname: string;\n try {\n hostname = new URL(url).hostname.toLowerCase();\n } catch {\n return true;\n }\n if (!hostname || isIpLiteralHost(hostname)) return false;\n\n try {\n const { lookup } = await import(\"node:dns/promises\");\n const records = await lookup(hostname, { all: true, verbatim: true });\n return records.some((record) => isPrivateHost(record.address));\n } catch {\n // Some edge runtimes do not expose DNS lookup. Keep the deterministic\n // parser-based protections instead of failing every outbound request.\n return false;\n }\n}\n\n/**\n * Build an undici Dispatcher whose connect-time DNS lookup runs through a\n * private-IP guard. This closes the TOCTOU gap where:\n * 1. We resolve hostname → public IP and pass.\n * 2. Between that lookup and the actual connect, DNS rebinding flips the\n * record to a private IP.\n * 3. fetch() resolves again and connects to the private IP.\n *\n * With a custom dispatcher, the same lookup that produces the IP also gates\n * the connect: if the IP is in the private set, the connect throws.\n *\n * Returns `null` if undici / node:dns are not available (e.g. some edge\n * runtimes); the caller should fall back to the regular `fetch` path —\n * `isBlockedExtensionUrlWithDns` will still have caught most rebinding cases.\n */\nexport async function createSsrfSafeDispatcher(): Promise<unknown | null> {\n // Keep the optional undici import opaque to Vite/Rolldown. A static\n // `import(\"undici\")` makes browser builds try to resolve and bundle undici\n // even though this dispatcher is only useful in Node server runtimes.\n let undici: any;\n let dnsModule: any;\n try {\n const runtimeImport = new Function(\n \"specifier\",\n \"return import(specifier)\",\n ) as (specifier: string) => Promise<any>;\n undici = await runtimeImport(\"undici\");\n dnsModule = await import(\"node:dns\");\n } catch {\n return null;\n }\n\n const { Agent } = undici;\n const { lookup } = dnsModule;\n if (!Agent || !lookup) return null;\n\n return new Agent({\n connect: {\n // Override DNS lookup at connect time so the IP we hand to undici's\n // socket is the one we authorized. Reject any record in the private\n // set BEFORE the TCP handshake.\n lookup: (\n hostname: string,\n options: any,\n callback: (\n err: NodeJS.ErrnoException | null,\n address?: string | { address: string; family: number }[],\n family?: number,\n ) => void,\n ) => {\n lookup(\n hostname,\n { all: true, verbatim: true },\n (err: NodeJS.ErrnoException | null, addresses: any) => {\n if (err) return callback(err);\n const list: { address: string; family: number }[] = Array.isArray(\n addresses,\n )\n ? addresses\n : [{ address: addresses, family: 4 }];\n for (const record of list) {\n if (isPrivateHost(record.address)) {\n const e = new Error(\n `Connect blocked: ${hostname} resolved to private address ${record.address}`,\n ) as NodeJS.ErrnoException;\n e.code = \"EAI_BLOCKED\";\n return callback(e);\n }\n }\n // Mirror Node's lookup behavior: when `all` is true, return the\n // array; otherwise the first entry. undici's connect honors\n // `options.all`.\n if (options && options.all) {\n return callback(null, list as any);\n }\n const first = list[0];\n return callback(null, first.address, first.family);\n },\n );\n },\n },\n });\n}\n\n/**\n * SSRF-safe `fetch` for any server-side request to a user/agent-supplied URL.\n *\n * Applies the same protections the extension proxy uses, so every call site\n * that fetches an untrusted URL gets them without re-implementing the loop:\n * 1. Pre-flight DNS-aware private-address check (isBlockedExtensionUrlWithDns)\n * on the initial URL and on every redirect hop.\n * 2. A connect-time dispatcher that re-checks the resolved IP at TCP-connect\n * time (closes the DNS-rebinding TOCTOU) when undici is available.\n * 3. Manual redirect handling — a public URL cannot 30x-redirect into the\n * private network because each hop is re-validated before it is followed.\n *\n * Throws an Error whose message starts with \"SSRF blocked:\" when a target\n * (initial or via redirect) resolves to a private/internal address, or when the\n * redirect limit is exceeded. Otherwise returns the final Response.\n *\n * `httpsOnly` extends the per-hop validation to the URL scheme: redirects are\n * followed only to `https:` targets, so an HTTPS-only caller cannot be\n * downgraded to plain HTTP by a 30x from the (untrusted) origin.\n */\nexport async function ssrfSafeFetch(\n url: string,\n init: RequestInit = {},\n options: { maxRedirects?: number; httpsOnly?: boolean } = {},\n): Promise<Response> {\n const maxRedirects = options.maxRedirects ?? 3;\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n\n let currentUrl = url;\n for (let hop = 0; hop <= maxRedirects; hop++) {\n if (options.httpsOnly && new URL(currentUrl).protocol !== \"https:\") {\n throw new Error(\n `SSRF blocked: refusing to fetch non-HTTPS address (${currentUrl})`,\n );\n }\n if (await isBlockedExtensionUrlWithDns(currentUrl)) {\n throw new Error(\n `SSRF blocked: refusing to fetch private/internal address (${currentUrl})`,\n );\n }\n const fetchOpts: RequestInit & { dispatcher?: unknown } = {\n ...init,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOpts.dispatcher = dispatcher;\n\n const response = await fetch(currentUrl, fetchOpts);\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n if (!location) return response;\n // Drain the redirect body so the hop's connection is released instead\n // of being held until GC.\n await response.body?.cancel().catch(() => {});\n currentUrl = new URL(location, currentUrl).href;\n continue;\n }\n return response;\n }\n throw new Error(\n `SSRF blocked: too many redirects (>${maxRedirects}) while fetching ${url}`,\n );\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Legacy aliases — predate the Tools → Extensions rename. Templates import\n// these via the legacy `@agent-native/core/tools/url-safety` subpath; keep\n// the names exported so they keep resolving until every consumer updates.\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport { isBlockedExtensionUrl as isBlockedToolUrl };\nexport { isBlockedExtensionUrlWithDns as isBlockedToolUrlWithDns };\nexport { ssrfSafeFetch as ssrfSafeToolFetch };\n"]}
|
|
@@ -17,12 +17,12 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
17
17
|
id?: undefined;
|
|
18
18
|
provider?: undefined;
|
|
19
19
|
} | {
|
|
20
|
-
error?: undefined;
|
|
21
20
|
configured?: undefined;
|
|
22
21
|
connectPath?: undefined;
|
|
23
22
|
url: string;
|
|
24
23
|
id: string;
|
|
25
24
|
provider: string;
|
|
25
|
+
error?: undefined;
|
|
26
26
|
}>;
|
|
27
27
|
export default _default;
|
|
28
28
|
//# sourceMappingURL=upload-image.d.ts.map
|
|
@@ -364,9 +364,16 @@ declare const messages: {
|
|
|
364
364
|
join: string;
|
|
365
365
|
invitedByLabel: string;
|
|
366
366
|
you: string;
|
|
367
|
+
owner: string;
|
|
367
368
|
admin: string;
|
|
368
369
|
member: string;
|
|
369
370
|
members: string;
|
|
371
|
+
inviteMembers: string;
|
|
372
|
+
invited: string;
|
|
373
|
+
role: string;
|
|
374
|
+
status: string;
|
|
375
|
+
actions: string;
|
|
376
|
+
noMembers: string;
|
|
370
377
|
memberCount_one: string;
|
|
371
378
|
memberCount_other: string;
|
|
372
379
|
youAreRole: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-messages.d.ts","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"default-messages.d.ts","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -369,9 +369,16 @@ const messages = {
|
|
|
369
369
|
join: "Join",
|
|
370
370
|
invitedByLabel: "Invited by {{name}}",
|
|
371
371
|
you: "You",
|
|
372
|
+
owner: "Owner",
|
|
372
373
|
admin: "Admin",
|
|
373
374
|
member: "Member",
|
|
374
375
|
members: "Members",
|
|
376
|
+
inviteMembers: "Invite members",
|
|
377
|
+
invited: "Invited",
|
|
378
|
+
role: "Role",
|
|
379
|
+
status: "Status",
|
|
380
|
+
actions: "Actions",
|
|
381
|
+
noMembers: "No members yet.",
|
|
375
382
|
memberCount_one: "{{count}} member",
|
|
376
383
|
memberCount_other: "{{count}} members",
|
|
377
384
|
youAreRole: "You are {{role}}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-messages.js","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"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","sourcesContent":["// Canonical English catalog used by core UI for translation fallbacks.\n// Lives under src/ so tsc emits it to dist/*.js and Node's strict ESM resolver\n// can load it during SSR. Do not import core runtime code from src/templates:\n// templates ship as verbatim copy-only scaffolding (.ts), so their compiled\n// .js never exists in dist.\nconst messages = {\n home: {\n settingsTitle: \"Settings\",\n settingsDescription: \"Language and agent preferences\",\n title: \"Your app is running\",\n intro: \"Start building by editing\",\n actionCardTitle: \"Action-backed data\",\n loadingAction: \"Loading action result...\",\n docsTitle: \"Documentation\",\n docsDescription: \"Learn the framework\",\n themeTitle: \"Theme\",\n themeDescription: \"Toggle dark / light\",\n },\n settings: {\n title: \"Settings\",\n description: \"Language and workspace preferences for this app.\",\n languageTitle: \"Language\",\n languageDescription:\n \"Choose the interface language. This preference is saved for your account.\",\n languageLabel: \"Interface language\",\n agentTitle: \"Agent settings\",\n agentDescription:\n \"Open the agent sidebar settings for model, API keys, automations, voice, and other agent controls.\",\n openAgentSettings: \"Open agent settings\",\n workspaceTitle: \"Workspace\",\n workspaceDescription: \"Manage team access and shared workspace resources.\",\n openTeamSettings: \"Open team settings\",\n openResourceSettings: \"Open resource settings\",\n backHome: \"Back to home\",\n },\n dispatch: {\n nav: {\n chat: \"Chat\",\n overview: \"Overview\",\n apps: \"Apps\",\n metrics: \"Metrics\",\n vault: \"Vault\",\n integrations: \"Integrations\",\n agents: \"Agents\",\n resources: \"Resources\",\n messaging: \"Messaging\",\n destinations: \"Destinations\",\n identities: \"Identities\",\n approvals: \"Approvals\",\n automations: \"Automations\",\n delivery: \"Delivery\",\n audit: \"Audit\",\n dreams: \"Dreams\",\n threadDebug: \"Thread Debug\",\n settings: \"Settings\",\n team: \"Team\",\n operations: \"Operations\",\n navigation: \"Navigation\",\n navigationDescription: \"Workspace navigation links\",\n },\n sidebar: {\n workspaceControlPlane: \"Workspace control plane\",\n workspaceSubtitle_one: \"Workspace · {{count}} app\",\n workspaceSubtitle_other: \"Workspace · {{count}} apps\",\n chats: \"Chats\",\n newChat: \"New chat\",\n newDispatchChat: \"New Dispatch chat\",\n renameChat: \"Rename chat\",\n renameThread: \"Rename {{title}}\",\n chatOptions: \"Chat options for {{title}}\",\n aboutPage: \"About {{title}}\",\n emptyAgentText:\n \"Create apps, manage vault keys, and route work across the workspace.\",\n suggestionBuildApp: \"Build a workspace app for X\",\n suggestionRouteSlack: \"Route Slack mentions to my analytics app\",\n suggestionGrantKey: \"Grant my OpenAI key to this app\",\n },\n pages: {\n appsDescription:\n \"Open workspace apps and start new app creation from Dispatch.\",\n appsDescriptionWithWorkspace:\n 'Apps in the \"{{workspace}}\" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.',\n appsInWorkspace: \"Apps in {{workspace}}\",\n workspaceApps: \"Workspace apps\",\n activeCount: \"{{count}} active\",\n hiddenCount: \"{{count}} hidden\",\n createApp: \"Create app\",\n templates: \"Templates\",\n checkingTemplates: \"Checking available templates\",\n templatesAvailable: \"{{count}} available to scaffold\",\n hide: \"Hide\",\n show: \"Show\",\n hiddenApps: \"Hidden apps\",\n hiddenAppCount: \"{{count}} hidden apps\",\n workspaceAppFallback: \"Workspace App\",\n workspaceAppDescription:\n \"Open a deployed app or check the status of an app being created.\",\n pageNotFound: \"Page not found\",\n pageNotFoundDescription:\n \"This route is not in the workspace app list yet.\",\n browseApps: \"Browse apps\",\n newApp: \"New App\",\n newAppDescription:\n \"Create a workspace app from a prompt and apply the workspace vault policy.\",\n destinationsDescription:\n \"Saved outbound Slack channels, Telegram chats, and thread targets.\",\n savedDestinations: \"Saved destinations\",\n addDestination: \"Add destination\",\n quickTestMessage: \"Quick test message\",\n send: \"Send\",\n delete: \"Delete\",\n cancel: \"Cancel\",\n messageSent: \"Message sent\",\n unableToSendMessage: \"Unable to send message\",\n destinationSaved: \"Destination saved\",\n destinationRemoved: \"Destination removed\",\n deleteDestinationTitle: \"Delete destination?\",\n deleteDestinationDescription:\n '\"{{name}}\" will be removed. Any saved workflows or jobs that target this destination will start failing on the next send.',\n noDestinations:\n \"No destinations saved yet. Add your first Slack channel or Telegram chat on the right.\",\n dailyDigestChannel: \"Daily digest channel\",\n optionalThreadOrTopicId: \"Optional thread or topic id\",\n destinationNotes: \"What should use this destination?\",\n saveDestination: \"Save destination\",\n noWorkspaceApps: \"No workspace apps yet\",\n noWorkspaceAppsDescription:\n \"Create an app when a workflow needs its own focused place to live.\",\n appNotFound: \"App not found\",\n building: \"Building\",\n appBuildingPrefix: \"This app is being created. It will be available at\",\n appBuildingSuffix:\n \"after its branch is merged and the workspace deploy finishes.\",\n branch: \"Branch: {{branch}}\",\n openBuilderBranch: \"Open Builder branch\",\n openingApp: \"Opening {{name}}\",\n redirectingTo: \"Redirecting to\",\n openApp: \"Open app\",\n notDispatchOrWorkspaceApp:\n \" a Dispatch tab or a workspace app in this workspace.\",\n agentsDescription:\n \"Dispatch can delegate to the built-in app suite over A2A by default. Add extra agents here only if you want to route work to apps outside that built-in set.\",\n mcpAccessUpdated: \"MCP app access updated\",\n selectAppForMcp: \"Select at least one app, or expose all apps.\",\n mcpUrlCopied: \"MCP URL copied\",\n mcpUrlCopyFailed: \"Could not copy MCP URL\",\n unifiedMcpGateway: \"Unified MCP gateway\",\n unifiedMcpGatewayDescription:\n \"Connect external agents to Dispatch once, then route to granted workspace apps through\",\n allApps: \"All apps\",\n selectedApps: \"Selected apps\",\n loading: \"Loading\",\n grantedCount: \"{{count}} granted\",\n exposeAllAppsMcp: \"Expose all apps through Dispatch MCP\",\n copyUrl: \"Copy URL\",\n metricsUnavailable: \"Metrics unavailable\",\n unableToLoadUsage: \"Unable to load usage.\",\n metricsDescriptionBuilder:\n \"Workspace-wide Builder.io credit spend, chat volume, user activity, and app access.\",\n metricsDescriptionLlm:\n \"Workspace-wide LLM spend, chat volume, user activity, and app access.\",\n llmCalls: \"LLM calls\",\n activeUsers: \"Active users\",\n workspaceAppsStat: \"Workspace apps\",\n chatThreads: \"Chat threads\",\n also: \"Also\",\n workspaceShortcutsAria: \"Workspace shortcuts\",\n deliveryQueue: \"Delivery queue\",\n failedLastHour: \"{{count}} failed in the last hour\",\n processingCount: \"{{count}} processing\",\n queued: \"Queued\",\n active: \"Active\",\n done1h: \"Done 1h\",\n failed1h: \"Failed 1h\",\n oldestQueued: \"Oldest queued: {{age}}\",\n queueAgeNone: \"none\",\n queueFailureHint:\n \"Check credentials, destinations, and recent queue errors.\",\n unknownPlatform: \"unknown\",\n attemptsCount: \"{{count}} attempts\",\n noErrorMessage: \"(no error message)\",\n },\n },\n agentPanel: {\n useBuilder: \"Use Builder\",\n openDesktopToEditCode: \"Open Desktop to edit code\",\n codeUnavailableDescription:\n \"Source-code changes and CLI access are available in the Agent Native Desktop app.\",\n downloadDesktop: \"Download Desktop\",\n chatMode: \"Chat mode\",\n chat: \"Chat\",\n cliTerminalMode: \"CLI terminal mode\",\n cli: \"CLI\",\n workspaceMode: \"Workspace files, agents, skills, and tasks\",\n workspace: \"Workspace\",\n newChat: \"New chat\",\n newTerminal: \"New terminal\",\n panelOptions: \"Agent panel options\",\n collapseSidebar: \"Collapse sidebar\",\n hideChats: \"Hide chats\",\n allChats: \"All chats\",\n settings: \"Settings\",\n feedback: \"Feedback\",\n exitFullscreen: \"Exit fullscreen\",\n fullscreen: \"Fullscreen\",\n closeTab: \"Close tab\",\n closeOtherTabs: \"Close other tabs\",\n closeAllTabs: \"Close all tabs\",\n clearChat: \"Clear chat\",\n cliRequiresDevMode: \"CLI requires dev mode\",\n cliRequiresDevModeDescription:\n \"Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.\",\n toggleAgent: \"Toggle agent\",\n },\n share: {\n titleWithResource: 'Share \"{{title}}\"',\n titleWithType: \"Share {{type}}\",\n owner: \"Owner: {{name}}\",\n close: \"Close\",\n shareOptions: \"Share options\",\n link: \"Link\",\n invite: \"Invite\",\n embed: \"Embed\",\n done: \"Done\",\n generalAccess: \"General access\",\n shareLink: \"Share link\",\n addPeopleByEmail: \"Add people by email\",\n notifyPeople: \"Notify people\",\n peopleWithAccess: \"People with access\",\n ownerRole: \"Owner\",\n remove: \"Remove\",\n noAccess: \"No one has access yet.\",\n embedUrl: \"Embed URL\",\n embedCode: \"Embed code\",\n copy: \"Copy\",\n role: \"Role\",\n private: \"Private\",\n privateDescription: \"Only people with access can view\",\n organization: \"Organization\",\n organizationDescription: \"Anyone in your organization can view\",\n public: \"Public\",\n publicDescription: \"Anyone signed in with the link can view\",\n viewer: \"Viewer\",\n viewerDescription: \"Can view\",\n editor: \"Editor\",\n editorDescription: \"Can edit\",\n admin: \"Admin\",\n adminDescription: \"Can edit and manage access\",\n },\n runsTray: {\n runs: \"Runs\",\n agentRuns: \"Agent runs\",\n activeRun_one: \"{{count}} active run\",\n activeRun_other: \"{{count}} active runs\",\n failedRun_one: \"{{count}} failed run\",\n failedRun_other: \"{{count}} failed runs\",\n recentRuns: \"Recent runs\",\n noRecentRuns: \"No recent runs\",\n ariaAgentRuns: \"Agent runs, {{label}}\",\n summaryRunning: \"{{activeCount}} running\",\n summaryRunningRecent: \"{{activeCount}} running · {{terminalCount}} recent\",\n summaryRecent_one: \"{{count}} recent run\",\n summaryRecent_other: \"{{count}} recent runs\",\n noTrackedWorkYet: \"No tracked work yet\",\n emptyDescription:\n \"Background agent work will appear here while it runs and after it finishes.\",\n open: \"Open\",\n stopRun: \"Stop {{title}}\",\n hideRun: \"Hide {{title}}\",\n statusRunning: \"Running\",\n statusDone: \"Done\",\n statusFailed: \"Failed\",\n statusStopped: \"Stopped\",\n updatedJustNow: \"Updated just now\",\n finishedJustNow: \"Finished just now\",\n updatedMinutes: \"Updated {{count}}m ago\",\n finishedMinutes: \"Finished {{count}}m ago\",\n updatedHours: \"Updated {{count}}h ago\",\n finishedHours: \"Finished {{count}}h ago\",\n updatedDate: \"Updated {{date}}\",\n finishedDate: \"Finished {{date}}\",\n },\n codeRequired: {\n fallbackDetail:\n \"Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.\",\n defaultFeature: \"Make the requested code changes to this app\",\n branchError: \"Failed to create branch\",\n title: \"Code changes required\",\n subtitleWithFeature:\n '\"{{feature}}\" creates or modifies source code, which needs Desktop or Builder from this surface.',\n subtitle:\n \"This action creates or modifies source code, which needs Desktop or Builder from this surface.\",\n desktopTitle: \"Use Agent Native Desktop\",\n desktopDescription:\n \"Open the project in the desktop app to enable source edits and CLI access.\",\n builderAgentTitle: \"Use Builder.io Agent\",\n builderAgentDescription:\n \"Let our cloud agent make the changes for you. You'll get a link to preview and deploy.\",\n codeChangeTitle: \"This requires a code change\",\n codeChangeBadge: \"Code change\",\n connectBuilderTitle: \"Connect Builder.io\",\n connectBuilderDescription:\n \"Connect Builder to enable cloud-based code changes from this app.\",\n setupRequired: \"Setup required\",\n branchCreated: \"Branch created\",\n close: \"Close\",\n },\n extensions: {\n createPrompt: \"Create an extension: {{prompt}}\",\n createWidgetPrompt:\n 'Create a new widget that fits in slot \"{{slotId}}\". I\\'ll describe what it should do next.',\n whatShouldItDo: \"What should it do?\",\n createPlaceholder: \"A todo list, API dashboard, calculator...\",\n title: \"Extensions\",\n hiddenShown: \"Hiding shown\",\n showHidden: \"Show hidden\",\n newExtension: \"New Extension\",\n newExtensionTitle: \"New extension\",\n buildPlaceholder: \"Describe what you'd like to build...\",\n namePlaceholder: \"My Extension\",\n descriptionPlaceholder: \"What does this extension do?\",\n contentPlaceholder: \"<html>...</html>\",\n emptyTitle: \"Create your first extension\",\n emptyDescription: \"Describe a small app and the agent will build it.\",\n hiddenFromEveryone: \"Hidden from everyone\",\n localFile: \"Local file\",\n optionsFor: \"Options for {{name}}\",\n unhideEveryone: \"Unhide for everyone\",\n hideEveryone: \"Hide from everyone\",\n localFileDescription:\n \"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.\",\n deleteQuestion: \"Delete {{name}}?\",\n removeQuestion: \"Remove {{name}}?\",\n hideForYouDescription:\n \"This hides it from your Extensions list without deleting it for anyone else.\",\n removeEverywhereDescription: \"This removes it everywhere it is shared.\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n removing: \"Removing...\",\n delete: \"Delete\",\n deleting: \"Deleting...\",\n openFullView: \"Open full view\",\n removeFromWidgetArea: \"Remove from this widget area\",\n deleteExtensionEllipsis: \"Delete extension...\",\n removeFromMyListEllipsis: \"Remove from my list...\",\n removeFromWidgetAreaForMe: \"Remove from this widget area (for me)\",\n deleteEverywhereConfirmation:\n \"This removes the extension everywhere, for everyone it's shared with.\",\n addWidget: \"Add widget\",\n loading: \"Loading...\",\n noWidgetsAvailable: \"No widgets available for this slot yet.\",\n buildNewWidget: \"Build a new widget\",\n contactSidebarWidget: \"Contact sidebar widget\",\n contactSidebarDescription:\n \"Appears beside the current conversation with contact and thread context.\",\n eventDetailWidget: \"Event detail widget\",\n eventDetailDescription:\n \"Appears below the open calendar event with event and attendee context.\",\n addWidgetHere: \"Add widget here\",\n back: \"Back\",\n editExtension: \"Edit Extension\",\n saving: \"Saving...\",\n save: \"Save\",\n create: \"Create\",\n moreOptions: \"More options\",\n appearsIn: \"Appears in\",\n noWidgetAreas:\n \"Not installed in any widget areas. Ask the agent to add it somewhere.\",\n widgetAreaCount_one: \"This extension can render in {{count}} widget area.\",\n widgetAreaCount_other:\n \"This extension can render in {{count}} widget areas.\",\n nameLabel: \"Name\",\n descriptionLabel: \"Description\",\n contentLabel: \"Content\",\n previewTitle: \"Extension preview\",\n previewEmpty: \"Preview will appear here\",\n },\n org: {\n createTitle: \"Create your organization\",\n createDescription:\n \"This app organizes your content by team. Create an organization to continue - you can invite teammates afterward.\",\n loadErrorTitle: \"Couldn't load organization\",\n loadErrorFallback: \"Couldn't load organization.\",\n tryAgain: \"Try again\",\n sendFeedback: \"Send feedback\",\n feedbackPlaceholder:\n \"Describe what happened before this organization error appeared.\",\n openGitHubIssue: \"Open GitHub issue\",\n yourOrganization: \"Your organization\",\n joinYourTeam: \"Join your team\",\n openToDomainEmails: \"Open to @{{domain}} emails\",\n joinOrg: \"Join {{name}}\",\n pendingInvitations: \"Pending invitations\",\n invitedBy: \"from {{name}}\",\n accept: \"Accept\",\n createSeparate: \"or create a separate organization\",\n organizationName: \"Organization name\",\n organizationPlaceholder: \"Acme Inc.\",\n createOrganization: \"Create organization\",\n create: \"Create\",\n creating: \"Creating...\",\n team: \"Team\",\n createOrgCardTitle: \"Create an Organization\",\n createOrgCardDescription:\n \"Set up a team to collaborate with your colleagues.\",\n joinDomainOne:\n \"An organization matching your email domain already exists. Join it to collaborate with your teammates.\",\n joinDomainMany:\n \"Organizations matching your email domain already exist. Join one to collaborate with your teammates.\",\n join: \"Join\",\n invitedByLabel: \"Invited by {{name}}\",\n you: \"You\",\n admin: \"Admin\",\n member: \"Member\",\n members: \"Members\",\n memberCount_one: \"{{count}} member\",\n memberCount_other: \"{{count}} members\",\n youAreRole: \"You are {{role}}\",\n changeRole: \"Change role\",\n removeMember: \"Remove member\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n save: \"Save\",\n loading: \"Loading...\",\n },\n integrations: {\n webhookUrl: \"Webhook URL\",\n copyWebhookUrl: \"Copy webhook URL\",\n notConfigured:\n \"Not configured. Set the required secrets to enable this integration.\",\n enable: \"Enable\",\n disable: \"Disable\",\n toggling: \"...\",\n networkError: \"Network error reaching the server\",\n back: \"Back\",\n agentEngineRequired: \"Agent engine required\",\n agentEngineDescription:\n \"Connect Builder.io or an LLM key before {{platform}} can answer.\",\n openLlm: \"Open LLM\",\n setup: \"Setup\",\n shareDocumentsWith: \"Share documents with\",\n copyServiceAccountEmail: \"Copy service account email\",\n requiredSecrets: \"Required secrets\",\n envHelp: \"Set these in your .env file or environment to connect.\",\n copy: \"Copy\",\n documentation: \"Documentation\",\n clientAvailable:\n \"This agent's A2A endpoint is automatically available. No configuration needed.\",\n addChatIntegration: \"Add a chat integration\",\n chatIntegrations: \"Chat Integrations\",\n chatIntegrationsDescription: \"Talk to this agent from other platforms\",\n addIntegration: \"Add integration\",\n dispatchEntrypoint:\n \"For a central Slack or Telegram entrypoint that can route work across multiple apps, use the\",\n sharedMessaging:\n \"Need one shared messaging surface for your workspace? Connect Slack or Telegram to a dispatch app and let it delegate to other agents over A2A.\",\n },\n mcpIntegrations: {\n menuLabel: \"Integrations\",\n menuDescription: \"Connect MCP tools to the agent\",\n title: \"Connect integrations\",\n description: \"Choose a default MCP integration or add a custom server.\",\n searchPlaceholder: \"Search integrations\",\n addYourOwn: \"Add your own\",\n noMatches: \"No integrations match that search.\",\n connected: \"Connected\",\n configure: \"Configure\",\n connect: \"Connect\",\n backToIntegrations: \"Back to integrations\",\n customTitle: \"Add custom MCP server\",\n configureTitle: \"Configure {{name}}\",\n presetNoAuthDescription:\n \"Preset values are filled in. Test the endpoint or connect it now.\",\n presetAuthDescription:\n \"Preset values are filled in. Add any required authorization details before connecting.\",\n customDescription:\n \"Paste a Streamable HTTP or SSE MCP endpoint and optional headers.\",\n oauthNotice:\n \"This provider usually requires an OAuth setup. Follow the provider docs, or add an Authorization header if your endpoint supports token-based access.\",\n personal: \"Personal\",\n organization: \"Organization\",\n orgNoOrg: \"Join an organization to share MCP servers\",\n orgAdminOnly: \"Only owners and admins can add org-scope servers\",\n serverName: \"Server name\",\n url: \"URL\",\n fieldDescription: \"Description\",\n headers: \"Headers\",\n serverNamePlaceholder: \"Server name\",\n urlPlaceholder: \"https://mcp.example.com/mcp\",\n descriptionPlaceholder: \"Description (optional)\",\n headersPlaceholder: \"Authorization: Bearer <token>\",\n openSetupDocs: \"Open setup docs\",\n test: \"Test\",\n toolsAvailable_one: \"{{count}} tool available\",\n toolsAvailable_other: \"{{count}} tools available\",\n failed: \"Failed\",\n docsLabel: \"View {{name}} docs\",\n catalog: {\n context7: {\n description: \"Fetch current library docs in agent chats.\",\n useCase:\n \"Documentation, technical reference, API docs, framework guides\",\n },\n sentry: {\n description: \"Inspect issues, events, and debugging data.\",\n useCase: \"Error monitoring, debugging, performance, crash reports\",\n },\n notion: {\n description: \"Search pages and team knowledge.\",\n useCase: \"Documentation, knowledge management, notes, content creation\",\n },\n semgrep: {\n description: \"Scan code for security findings.\",\n useCase: \"Security scanning, vulnerability detection, code analysis\",\n },\n linear: {\n description: \"Read and write Linear issues.\",\n useCase: \"Project management, issue tracking, planning, bug reports\",\n },\n supabase: {\n description: \"Manage data, auth, and backend services.\",\n useCase: \"Database, authentication, storage, edge functions\",\n },\n neon: {\n description: \"Work with serverless Postgres projects.\",\n useCase: \"Database management, serverless Postgres, data storage\",\n },\n stripe: {\n description: \"Manage payments, subscriptions, and customers.\",\n useCase: \"Payments, subscriptions, invoicing, customer management\",\n },\n },\n auth: {\n none: \"No auth\",\n headers: \"Header\",\n oauth: \"OAuth\",\n },\n },\n observability: {\n noData: \"No data available\",\n noConversations: \"No conversations recorded yet\",\n noEvals: \"No eval results recorded yet\",\n noExperiments: \"No experiments created yet\",\n totalRuns: \"Total runs\",\n totalCost: \"Total cost\",\n avgLatency: \"Avg latency\",\n toolSuccess: \"Tool success\",\n thumbsUp: \"Thumbs up\",\n avgEvalScore: \"Avg eval score\",\n run: \"Run\",\n model: \"Model\",\n duration: \"Duration\",\n cost: \"Cost\",\n tools: \"Tools\",\n time: \"Time\",\n failedCount: \"({{count}} failed)\",\n backToList: \"Back to list\",\n spans: \"Spans\",\n type: \"Type\",\n name: \"Name\",\n tokens: \"Tokens\",\n status: \"Status\",\n totalEvals: \"Total evals\",\n avgScore: \"Avg score\",\n scoresByCriteria: \"Scores by criteria\",\n overview: \"Overview\",\n conversations: \"Conversations\",\n evals: \"Evals\",\n experiments: \"Experiments\",\n feedback: \"Feedback\",\n variants: \"Variants\",\n created: \"Created\",\n backToExperiments: \"Back to experiments\",\n metrics: \"Metrics\",\n level: \"Level\",\n results: \"Results\",\n variant: \"Variant\",\n metric: \"Metric\",\n value: \"Value\",\n totalFeedback: \"Total feedback\",\n thumbsDown: \"Thumbs down\",\n frustration: \"Frustration\",\n thumbsUpRate: \"Thumbs up rate\",\n categories: \"Categories\",\n },\n error: {\n genericTitle: \"Something went wrong\",\n genericDetails: \"An unexpected error occurred.\",\n notFoundTitle: \"Page not found\",\n notFoundDetails:\n \"This page doesn't exist. It may have been moved or deleted.\",\n statusTitle: \"{{status}} Error\",\n goHome: \"Go home\",\n },\n};\n\nexport default messages;\n"]}
|
|
1
|
+
{"version":3,"file":"default-messages.js","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"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","sourcesContent":["// Canonical English catalog used by core UI for translation fallbacks.\n// Lives under src/ so tsc emits it to dist/*.js and Node's strict ESM resolver\n// can load it during SSR. Do not import core runtime code from src/templates:\n// templates ship as verbatim copy-only scaffolding (.ts), so their compiled\n// .js never exists in dist.\nconst messages = {\n home: {\n settingsTitle: \"Settings\",\n settingsDescription: \"Language and agent preferences\",\n title: \"Your app is running\",\n intro: \"Start building by editing\",\n actionCardTitle: \"Action-backed data\",\n loadingAction: \"Loading action result...\",\n docsTitle: \"Documentation\",\n docsDescription: \"Learn the framework\",\n themeTitle: \"Theme\",\n themeDescription: \"Toggle dark / light\",\n },\n settings: {\n title: \"Settings\",\n description: \"Language and workspace preferences for this app.\",\n languageTitle: \"Language\",\n languageDescription:\n \"Choose the interface language. This preference is saved for your account.\",\n languageLabel: \"Interface language\",\n agentTitle: \"Agent settings\",\n agentDescription:\n \"Open the agent sidebar settings for model, API keys, automations, voice, and other agent controls.\",\n openAgentSettings: \"Open agent settings\",\n workspaceTitle: \"Workspace\",\n workspaceDescription: \"Manage team access and shared workspace resources.\",\n openTeamSettings: \"Open team settings\",\n openResourceSettings: \"Open resource settings\",\n backHome: \"Back to home\",\n },\n dispatch: {\n nav: {\n chat: \"Chat\",\n overview: \"Overview\",\n apps: \"Apps\",\n metrics: \"Metrics\",\n vault: \"Vault\",\n integrations: \"Integrations\",\n agents: \"Agents\",\n resources: \"Resources\",\n messaging: \"Messaging\",\n destinations: \"Destinations\",\n identities: \"Identities\",\n approvals: \"Approvals\",\n automations: \"Automations\",\n delivery: \"Delivery\",\n audit: \"Audit\",\n dreams: \"Dreams\",\n threadDebug: \"Thread Debug\",\n settings: \"Settings\",\n team: \"Team\",\n operations: \"Operations\",\n navigation: \"Navigation\",\n navigationDescription: \"Workspace navigation links\",\n },\n sidebar: {\n workspaceControlPlane: \"Workspace control plane\",\n workspaceSubtitle_one: \"Workspace · {{count}} app\",\n workspaceSubtitle_other: \"Workspace · {{count}} apps\",\n chats: \"Chats\",\n newChat: \"New chat\",\n newDispatchChat: \"New Dispatch chat\",\n renameChat: \"Rename chat\",\n renameThread: \"Rename {{title}}\",\n chatOptions: \"Chat options for {{title}}\",\n aboutPage: \"About {{title}}\",\n emptyAgentText:\n \"Create apps, manage vault keys, and route work across the workspace.\",\n suggestionBuildApp: \"Build a workspace app for X\",\n suggestionRouteSlack: \"Route Slack mentions to my analytics app\",\n suggestionGrantKey: \"Grant my OpenAI key to this app\",\n },\n pages: {\n appsDescription:\n \"Open workspace apps and start new app creation from Dispatch.\",\n appsDescriptionWithWorkspace:\n 'Apps in the \"{{workspace}}\" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.',\n appsInWorkspace: \"Apps in {{workspace}}\",\n workspaceApps: \"Workspace apps\",\n activeCount: \"{{count}} active\",\n hiddenCount: \"{{count}} hidden\",\n createApp: \"Create app\",\n templates: \"Templates\",\n checkingTemplates: \"Checking available templates\",\n templatesAvailable: \"{{count}} available to scaffold\",\n hide: \"Hide\",\n show: \"Show\",\n hiddenApps: \"Hidden apps\",\n hiddenAppCount: \"{{count}} hidden apps\",\n workspaceAppFallback: \"Workspace App\",\n workspaceAppDescription:\n \"Open a deployed app or check the status of an app being created.\",\n pageNotFound: \"Page not found\",\n pageNotFoundDescription:\n \"This route is not in the workspace app list yet.\",\n browseApps: \"Browse apps\",\n newApp: \"New App\",\n newAppDescription:\n \"Create a workspace app from a prompt and apply the workspace vault policy.\",\n destinationsDescription:\n \"Saved outbound Slack channels, Telegram chats, and thread targets.\",\n savedDestinations: \"Saved destinations\",\n addDestination: \"Add destination\",\n quickTestMessage: \"Quick test message\",\n send: \"Send\",\n delete: \"Delete\",\n cancel: \"Cancel\",\n messageSent: \"Message sent\",\n unableToSendMessage: \"Unable to send message\",\n destinationSaved: \"Destination saved\",\n destinationRemoved: \"Destination removed\",\n deleteDestinationTitle: \"Delete destination?\",\n deleteDestinationDescription:\n '\"{{name}}\" will be removed. Any saved workflows or jobs that target this destination will start failing on the next send.',\n noDestinations:\n \"No destinations saved yet. Add your first Slack channel or Telegram chat on the right.\",\n dailyDigestChannel: \"Daily digest channel\",\n optionalThreadOrTopicId: \"Optional thread or topic id\",\n destinationNotes: \"What should use this destination?\",\n saveDestination: \"Save destination\",\n noWorkspaceApps: \"No workspace apps yet\",\n noWorkspaceAppsDescription:\n \"Create an app when a workflow needs its own focused place to live.\",\n appNotFound: \"App not found\",\n building: \"Building\",\n appBuildingPrefix: \"This app is being created. It will be available at\",\n appBuildingSuffix:\n \"after its branch is merged and the workspace deploy finishes.\",\n branch: \"Branch: {{branch}}\",\n openBuilderBranch: \"Open Builder branch\",\n openingApp: \"Opening {{name}}\",\n redirectingTo: \"Redirecting to\",\n openApp: \"Open app\",\n notDispatchOrWorkspaceApp:\n \" a Dispatch tab or a workspace app in this workspace.\",\n agentsDescription:\n \"Dispatch can delegate to the built-in app suite over A2A by default. Add extra agents here only if you want to route work to apps outside that built-in set.\",\n mcpAccessUpdated: \"MCP app access updated\",\n selectAppForMcp: \"Select at least one app, or expose all apps.\",\n mcpUrlCopied: \"MCP URL copied\",\n mcpUrlCopyFailed: \"Could not copy MCP URL\",\n unifiedMcpGateway: \"Unified MCP gateway\",\n unifiedMcpGatewayDescription:\n \"Connect external agents to Dispatch once, then route to granted workspace apps through\",\n allApps: \"All apps\",\n selectedApps: \"Selected apps\",\n loading: \"Loading\",\n grantedCount: \"{{count}} granted\",\n exposeAllAppsMcp: \"Expose all apps through Dispatch MCP\",\n copyUrl: \"Copy URL\",\n metricsUnavailable: \"Metrics unavailable\",\n unableToLoadUsage: \"Unable to load usage.\",\n metricsDescriptionBuilder:\n \"Workspace-wide Builder.io credit spend, chat volume, user activity, and app access.\",\n metricsDescriptionLlm:\n \"Workspace-wide LLM spend, chat volume, user activity, and app access.\",\n llmCalls: \"LLM calls\",\n activeUsers: \"Active users\",\n workspaceAppsStat: \"Workspace apps\",\n chatThreads: \"Chat threads\",\n also: \"Also\",\n workspaceShortcutsAria: \"Workspace shortcuts\",\n deliveryQueue: \"Delivery queue\",\n failedLastHour: \"{{count}} failed in the last hour\",\n processingCount: \"{{count}} processing\",\n queued: \"Queued\",\n active: \"Active\",\n done1h: \"Done 1h\",\n failed1h: \"Failed 1h\",\n oldestQueued: \"Oldest queued: {{age}}\",\n queueAgeNone: \"none\",\n queueFailureHint:\n \"Check credentials, destinations, and recent queue errors.\",\n unknownPlatform: \"unknown\",\n attemptsCount: \"{{count}} attempts\",\n noErrorMessage: \"(no error message)\",\n },\n },\n agentPanel: {\n useBuilder: \"Use Builder\",\n openDesktopToEditCode: \"Open Desktop to edit code\",\n codeUnavailableDescription:\n \"Source-code changes and CLI access are available in the Agent Native Desktop app.\",\n downloadDesktop: \"Download Desktop\",\n chatMode: \"Chat mode\",\n chat: \"Chat\",\n cliTerminalMode: \"CLI terminal mode\",\n cli: \"CLI\",\n workspaceMode: \"Workspace files, agents, skills, and tasks\",\n workspace: \"Workspace\",\n newChat: \"New chat\",\n newTerminal: \"New terminal\",\n panelOptions: \"Agent panel options\",\n collapseSidebar: \"Collapse sidebar\",\n hideChats: \"Hide chats\",\n allChats: \"All chats\",\n settings: \"Settings\",\n feedback: \"Feedback\",\n exitFullscreen: \"Exit fullscreen\",\n fullscreen: \"Fullscreen\",\n closeTab: \"Close tab\",\n closeOtherTabs: \"Close other tabs\",\n closeAllTabs: \"Close all tabs\",\n clearChat: \"Clear chat\",\n cliRequiresDevMode: \"CLI requires dev mode\",\n cliRequiresDevModeDescription:\n \"Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.\",\n toggleAgent: \"Toggle agent\",\n },\n share: {\n titleWithResource: 'Share \"{{title}}\"',\n titleWithType: \"Share {{type}}\",\n owner: \"Owner: {{name}}\",\n close: \"Close\",\n shareOptions: \"Share options\",\n link: \"Link\",\n invite: \"Invite\",\n embed: \"Embed\",\n done: \"Done\",\n generalAccess: \"General access\",\n shareLink: \"Share link\",\n addPeopleByEmail: \"Add people by email\",\n notifyPeople: \"Notify people\",\n peopleWithAccess: \"People with access\",\n ownerRole: \"Owner\",\n remove: \"Remove\",\n noAccess: \"No one has access yet.\",\n embedUrl: \"Embed URL\",\n embedCode: \"Embed code\",\n copy: \"Copy\",\n role: \"Role\",\n private: \"Private\",\n privateDescription: \"Only people with access can view\",\n organization: \"Organization\",\n organizationDescription: \"Anyone in your organization can view\",\n public: \"Public\",\n publicDescription: \"Anyone signed in with the link can view\",\n viewer: \"Viewer\",\n viewerDescription: \"Can view\",\n editor: \"Editor\",\n editorDescription: \"Can edit\",\n admin: \"Admin\",\n adminDescription: \"Can edit and manage access\",\n },\n runsTray: {\n runs: \"Runs\",\n agentRuns: \"Agent runs\",\n activeRun_one: \"{{count}} active run\",\n activeRun_other: \"{{count}} active runs\",\n failedRun_one: \"{{count}} failed run\",\n failedRun_other: \"{{count}} failed runs\",\n recentRuns: \"Recent runs\",\n noRecentRuns: \"No recent runs\",\n ariaAgentRuns: \"Agent runs, {{label}}\",\n summaryRunning: \"{{activeCount}} running\",\n summaryRunningRecent: \"{{activeCount}} running · {{terminalCount}} recent\",\n summaryRecent_one: \"{{count}} recent run\",\n summaryRecent_other: \"{{count}} recent runs\",\n noTrackedWorkYet: \"No tracked work yet\",\n emptyDescription:\n \"Background agent work will appear here while it runs and after it finishes.\",\n open: \"Open\",\n stopRun: \"Stop {{title}}\",\n hideRun: \"Hide {{title}}\",\n statusRunning: \"Running\",\n statusDone: \"Done\",\n statusFailed: \"Failed\",\n statusStopped: \"Stopped\",\n updatedJustNow: \"Updated just now\",\n finishedJustNow: \"Finished just now\",\n updatedMinutes: \"Updated {{count}}m ago\",\n finishedMinutes: \"Finished {{count}}m ago\",\n updatedHours: \"Updated {{count}}h ago\",\n finishedHours: \"Finished {{count}}h ago\",\n updatedDate: \"Updated {{date}}\",\n finishedDate: \"Finished {{date}}\",\n },\n codeRequired: {\n fallbackDetail:\n \"Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.\",\n defaultFeature: \"Make the requested code changes to this app\",\n branchError: \"Failed to create branch\",\n title: \"Code changes required\",\n subtitleWithFeature:\n '\"{{feature}}\" creates or modifies source code, which needs Desktop or Builder from this surface.',\n subtitle:\n \"This action creates or modifies source code, which needs Desktop or Builder from this surface.\",\n desktopTitle: \"Use Agent Native Desktop\",\n desktopDescription:\n \"Open the project in the desktop app to enable source edits and CLI access.\",\n builderAgentTitle: \"Use Builder.io Agent\",\n builderAgentDescription:\n \"Let our cloud agent make the changes for you. You'll get a link to preview and deploy.\",\n codeChangeTitle: \"This requires a code change\",\n codeChangeBadge: \"Code change\",\n connectBuilderTitle: \"Connect Builder.io\",\n connectBuilderDescription:\n \"Connect Builder to enable cloud-based code changes from this app.\",\n setupRequired: \"Setup required\",\n branchCreated: \"Branch created\",\n close: \"Close\",\n },\n extensions: {\n createPrompt: \"Create an extension: {{prompt}}\",\n createWidgetPrompt:\n 'Create a new widget that fits in slot \"{{slotId}}\". I\\'ll describe what it should do next.',\n whatShouldItDo: \"What should it do?\",\n createPlaceholder: \"A todo list, API dashboard, calculator...\",\n title: \"Extensions\",\n hiddenShown: \"Hiding shown\",\n showHidden: \"Show hidden\",\n newExtension: \"New Extension\",\n newExtensionTitle: \"New extension\",\n buildPlaceholder: \"Describe what you'd like to build...\",\n namePlaceholder: \"My Extension\",\n descriptionPlaceholder: \"What does this extension do?\",\n contentPlaceholder: \"<html>...</html>\",\n emptyTitle: \"Create your first extension\",\n emptyDescription: \"Describe a small app and the agent will build it.\",\n hiddenFromEveryone: \"Hidden from everyone\",\n localFile: \"Local file\",\n optionsFor: \"Options for {{name}}\",\n unhideEveryone: \"Unhide for everyone\",\n hideEveryone: \"Hide from everyone\",\n localFileDescription:\n \"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.\",\n deleteQuestion: \"Delete {{name}}?\",\n removeQuestion: \"Remove {{name}}?\",\n hideForYouDescription:\n \"This hides it from your Extensions list without deleting it for anyone else.\",\n removeEverywhereDescription: \"This removes it everywhere it is shared.\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n removing: \"Removing...\",\n delete: \"Delete\",\n deleting: \"Deleting...\",\n openFullView: \"Open full view\",\n removeFromWidgetArea: \"Remove from this widget area\",\n deleteExtensionEllipsis: \"Delete extension...\",\n removeFromMyListEllipsis: \"Remove from my list...\",\n removeFromWidgetAreaForMe: \"Remove from this widget area (for me)\",\n deleteEverywhereConfirmation:\n \"This removes the extension everywhere, for everyone it's shared with.\",\n addWidget: \"Add widget\",\n loading: \"Loading...\",\n noWidgetsAvailable: \"No widgets available for this slot yet.\",\n buildNewWidget: \"Build a new widget\",\n contactSidebarWidget: \"Contact sidebar widget\",\n contactSidebarDescription:\n \"Appears beside the current conversation with contact and thread context.\",\n eventDetailWidget: \"Event detail widget\",\n eventDetailDescription:\n \"Appears below the open calendar event with event and attendee context.\",\n addWidgetHere: \"Add widget here\",\n back: \"Back\",\n editExtension: \"Edit Extension\",\n saving: \"Saving...\",\n save: \"Save\",\n create: \"Create\",\n moreOptions: \"More options\",\n appearsIn: \"Appears in\",\n noWidgetAreas:\n \"Not installed in any widget areas. Ask the agent to add it somewhere.\",\n widgetAreaCount_one: \"This extension can render in {{count}} widget area.\",\n widgetAreaCount_other:\n \"This extension can render in {{count}} widget areas.\",\n nameLabel: \"Name\",\n descriptionLabel: \"Description\",\n contentLabel: \"Content\",\n previewTitle: \"Extension preview\",\n previewEmpty: \"Preview will appear here\",\n },\n org: {\n createTitle: \"Create your organization\",\n createDescription:\n \"This app organizes your content by team. Create an organization to continue - you can invite teammates afterward.\",\n loadErrorTitle: \"Couldn't load organization\",\n loadErrorFallback: \"Couldn't load organization.\",\n tryAgain: \"Try again\",\n sendFeedback: \"Send feedback\",\n feedbackPlaceholder:\n \"Describe what happened before this organization error appeared.\",\n openGitHubIssue: \"Open GitHub issue\",\n yourOrganization: \"Your organization\",\n joinYourTeam: \"Join your team\",\n openToDomainEmails: \"Open to @{{domain}} emails\",\n joinOrg: \"Join {{name}}\",\n pendingInvitations: \"Pending invitations\",\n invitedBy: \"from {{name}}\",\n accept: \"Accept\",\n createSeparate: \"or create a separate organization\",\n organizationName: \"Organization name\",\n organizationPlaceholder: \"Acme Inc.\",\n createOrganization: \"Create organization\",\n create: \"Create\",\n creating: \"Creating...\",\n team: \"Team\",\n createOrgCardTitle: \"Create an Organization\",\n createOrgCardDescription:\n \"Set up a team to collaborate with your colleagues.\",\n joinDomainOne:\n \"An organization matching your email domain already exists. Join it to collaborate with your teammates.\",\n joinDomainMany:\n \"Organizations matching your email domain already exist. Join one to collaborate with your teammates.\",\n join: \"Join\",\n invitedByLabel: \"Invited by {{name}}\",\n you: \"You\",\n owner: \"Owner\",\n admin: \"Admin\",\n member: \"Member\",\n members: \"Members\",\n inviteMembers: \"Invite members\",\n invited: \"Invited\",\n role: \"Role\",\n status: \"Status\",\n actions: \"Actions\",\n noMembers: \"No members yet.\",\n memberCount_one: \"{{count}} member\",\n memberCount_other: \"{{count}} members\",\n youAreRole: \"You are {{role}}\",\n changeRole: \"Change role\",\n removeMember: \"Remove member\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n save: \"Save\",\n loading: \"Loading...\",\n },\n integrations: {\n webhookUrl: \"Webhook URL\",\n copyWebhookUrl: \"Copy webhook URL\",\n notConfigured:\n \"Not configured. Set the required secrets to enable this integration.\",\n enable: \"Enable\",\n disable: \"Disable\",\n toggling: \"...\",\n networkError: \"Network error reaching the server\",\n back: \"Back\",\n agentEngineRequired: \"Agent engine required\",\n agentEngineDescription:\n \"Connect Builder.io or an LLM key before {{platform}} can answer.\",\n openLlm: \"Open LLM\",\n setup: \"Setup\",\n shareDocumentsWith: \"Share documents with\",\n copyServiceAccountEmail: \"Copy service account email\",\n requiredSecrets: \"Required secrets\",\n envHelp: \"Set these in your .env file or environment to connect.\",\n copy: \"Copy\",\n documentation: \"Documentation\",\n clientAvailable:\n \"This agent's A2A endpoint is automatically available. No configuration needed.\",\n addChatIntegration: \"Add a chat integration\",\n chatIntegrations: \"Chat Integrations\",\n chatIntegrationsDescription: \"Talk to this agent from other platforms\",\n addIntegration: \"Add integration\",\n dispatchEntrypoint:\n \"For a central Slack or Telegram entrypoint that can route work across multiple apps, use the\",\n sharedMessaging:\n \"Need one shared messaging surface for your workspace? Connect Slack or Telegram to a dispatch app and let it delegate to other agents over A2A.\",\n },\n mcpIntegrations: {\n menuLabel: \"Integrations\",\n menuDescription: \"Connect MCP tools to the agent\",\n title: \"Connect integrations\",\n description: \"Choose a default MCP integration or add a custom server.\",\n searchPlaceholder: \"Search integrations\",\n addYourOwn: \"Add your own\",\n noMatches: \"No integrations match that search.\",\n connected: \"Connected\",\n configure: \"Configure\",\n connect: \"Connect\",\n backToIntegrations: \"Back to integrations\",\n customTitle: \"Add custom MCP server\",\n configureTitle: \"Configure {{name}}\",\n presetNoAuthDescription:\n \"Preset values are filled in. Test the endpoint or connect it now.\",\n presetAuthDescription:\n \"Preset values are filled in. Add any required authorization details before connecting.\",\n customDescription:\n \"Paste a Streamable HTTP or SSE MCP endpoint and optional headers.\",\n oauthNotice:\n \"This provider usually requires an OAuth setup. Follow the provider docs, or add an Authorization header if your endpoint supports token-based access.\",\n personal: \"Personal\",\n organization: \"Organization\",\n orgNoOrg: \"Join an organization to share MCP servers\",\n orgAdminOnly: \"Only owners and admins can add org-scope servers\",\n serverName: \"Server name\",\n url: \"URL\",\n fieldDescription: \"Description\",\n headers: \"Headers\",\n serverNamePlaceholder: \"Server name\",\n urlPlaceholder: \"https://mcp.example.com/mcp\",\n descriptionPlaceholder: \"Description (optional)\",\n headersPlaceholder: \"Authorization: Bearer <token>\",\n openSetupDocs: \"Open setup docs\",\n test: \"Test\",\n toolsAvailable_one: \"{{count}} tool available\",\n toolsAvailable_other: \"{{count}} tools available\",\n failed: \"Failed\",\n docsLabel: \"View {{name}} docs\",\n catalog: {\n context7: {\n description: \"Fetch current library docs in agent chats.\",\n useCase:\n \"Documentation, technical reference, API docs, framework guides\",\n },\n sentry: {\n description: \"Inspect issues, events, and debugging data.\",\n useCase: \"Error monitoring, debugging, performance, crash reports\",\n },\n notion: {\n description: \"Search pages and team knowledge.\",\n useCase: \"Documentation, knowledge management, notes, content creation\",\n },\n semgrep: {\n description: \"Scan code for security findings.\",\n useCase: \"Security scanning, vulnerability detection, code analysis\",\n },\n linear: {\n description: \"Read and write Linear issues.\",\n useCase: \"Project management, issue tracking, planning, bug reports\",\n },\n supabase: {\n description: \"Manage data, auth, and backend services.\",\n useCase: \"Database, authentication, storage, edge functions\",\n },\n neon: {\n description: \"Work with serverless Postgres projects.\",\n useCase: \"Database management, serverless Postgres, data storage\",\n },\n stripe: {\n description: \"Manage payments, subscriptions, and customers.\",\n useCase: \"Payments, subscriptions, invoicing, customer management\",\n },\n },\n auth: {\n none: \"No auth\",\n headers: \"Header\",\n oauth: \"OAuth\",\n },\n },\n observability: {\n noData: \"No data available\",\n noConversations: \"No conversations recorded yet\",\n noEvals: \"No eval results recorded yet\",\n noExperiments: \"No experiments created yet\",\n totalRuns: \"Total runs\",\n totalCost: \"Total cost\",\n avgLatency: \"Avg latency\",\n toolSuccess: \"Tool success\",\n thumbsUp: \"Thumbs up\",\n avgEvalScore: \"Avg eval score\",\n run: \"Run\",\n model: \"Model\",\n duration: \"Duration\",\n cost: \"Cost\",\n tools: \"Tools\",\n time: \"Time\",\n failedCount: \"({{count}} failed)\",\n backToList: \"Back to list\",\n spans: \"Spans\",\n type: \"Type\",\n name: \"Name\",\n tokens: \"Tokens\",\n status: \"Status\",\n totalEvals: \"Total evals\",\n avgScore: \"Avg score\",\n scoresByCriteria: \"Scores by criteria\",\n overview: \"Overview\",\n conversations: \"Conversations\",\n evals: \"Evals\",\n experiments: \"Experiments\",\n feedback: \"Feedback\",\n variants: \"Variants\",\n created: \"Created\",\n backToExperiments: \"Back to experiments\",\n metrics: \"Metrics\",\n level: \"Level\",\n results: \"Results\",\n variant: \"Variant\",\n metric: \"Metric\",\n value: \"Value\",\n totalFeedback: \"Total feedback\",\n thumbsDown: \"Thumbs down\",\n frustration: \"Frustration\",\n thumbsUpRate: \"Thumbs up rate\",\n categories: \"Categories\",\n },\n error: {\n genericTitle: \"Something went wrong\",\n genericDetails: \"An unexpected error occurred.\",\n notFoundTitle: \"Page not found\",\n notFoundDetails:\n \"This page doesn't exist. It may have been moved or deleted.\",\n statusTitle: \"{{status}} Error\",\n goHome: \"Go home\",\n },\n};\n\nexport default messages;\n"]}
|
|
@@ -41,28 +41,28 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
41
41
|
thumbsUpRate: number;
|
|
42
42
|
avgEvalScore: number;
|
|
43
43
|
} | {
|
|
44
|
+
error?: undefined;
|
|
45
|
+
ok?: undefined;
|
|
44
46
|
summary: import("./types.js").TraceSummary;
|
|
45
47
|
spans: import("./types.js").TraceSpan[];
|
|
46
48
|
id?: undefined;
|
|
49
|
+
} | {
|
|
47
50
|
error?: undefined;
|
|
48
51
|
ok?: undefined;
|
|
49
|
-
} | {
|
|
50
52
|
summary?: undefined;
|
|
51
53
|
spans?: undefined;
|
|
52
54
|
id: string;
|
|
53
|
-
error?: undefined;
|
|
54
|
-
ok?: undefined;
|
|
55
55
|
} | {
|
|
56
|
+
ok?: undefined;
|
|
56
57
|
summary?: undefined;
|
|
57
58
|
spans?: undefined;
|
|
58
59
|
id?: undefined;
|
|
59
60
|
error: any;
|
|
60
|
-
ok?: undefined;
|
|
61
61
|
} | {
|
|
62
|
+
error?: undefined;
|
|
62
63
|
summary?: undefined;
|
|
63
64
|
spans?: undefined;
|
|
64
65
|
id?: undefined;
|
|
65
66
|
ok: boolean;
|
|
66
|
-
error?: undefined;
|
|
67
67
|
}>>;
|
|
68
68
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -73,7 +73,6 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
|
|
|
73
73
|
offset?: unknown;
|
|
74
74
|
limit?: unknown;
|
|
75
75
|
}, {
|
|
76
|
-
deleted?: undefined;
|
|
77
76
|
jobs: {
|
|
78
77
|
id: string;
|
|
79
78
|
name: string;
|
|
@@ -84,6 +83,7 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
|
|
|
84
83
|
updatedAt: string;
|
|
85
84
|
}[];
|
|
86
85
|
total: number;
|
|
86
|
+
deleted?: undefined;
|
|
87
87
|
jobId?: undefined;
|
|
88
88
|
} | {
|
|
89
89
|
jobs?: undefined;
|
|
@@ -91,9 +91,9 @@ export declare function createProviderCorpusJobAction(options: CreateProviderCor
|
|
|
91
91
|
deleted: boolean;
|
|
92
92
|
jobId: string;
|
|
93
93
|
} | {
|
|
94
|
-
deleted?: undefined;
|
|
95
94
|
jobs?: undefined;
|
|
96
95
|
total?: undefined;
|
|
96
|
+
deleted?: undefined;
|
|
97
97
|
jobId?: undefined;
|
|
98
98
|
hits: Record<string, unknown>[];
|
|
99
99
|
offset: number;
|
|
@@ -49,8 +49,8 @@ export declare function handleUpdateResource(event: any): Promise<import("./stor
|
|
|
49
49
|
}>;
|
|
50
50
|
/** DELETE /_agent-native/resources/:id — delete a resource */
|
|
51
51
|
export declare function handleDeleteResource(event: any): Promise<{
|
|
52
|
-
error: string;
|
|
53
52
|
ok?: undefined;
|
|
53
|
+
error: string;
|
|
54
54
|
} | {
|
|
55
55
|
error?: undefined;
|
|
56
56
|
ok: boolean;
|
|
@@ -423,9 +423,16 @@ const messages = {
|
|
|
423
423
|
join: "Join",
|
|
424
424
|
invitedByLabel: "Invited by {{name}}",
|
|
425
425
|
you: "You",
|
|
426
|
+
owner: "المالك",
|
|
426
427
|
admin: "مسؤول",
|
|
427
428
|
member: "Member",
|
|
428
429
|
members: "Members",
|
|
430
|
+
inviteMembers: "دعوة أعضاء",
|
|
431
|
+
invited: "تمت الدعوة",
|
|
432
|
+
role: "الدور",
|
|
433
|
+
status: "الحالة",
|
|
434
|
+
actions: "الإجراءات",
|
|
435
|
+
noMembers: "لا يوجد أعضاء بعد.",
|
|
429
436
|
memberCount_one: "{{count}} member",
|
|
430
437
|
memberCount_other: "{{count}} members",
|
|
431
438
|
memberCount_zero: "{{count}} members",
|
|
@@ -410,9 +410,16 @@ const messages = {
|
|
|
410
410
|
join: "Join",
|
|
411
411
|
invitedByLabel: "Invited by {{name}}",
|
|
412
412
|
you: "You",
|
|
413
|
+
owner: "Eigentümer",
|
|
413
414
|
admin: "Admin",
|
|
414
415
|
member: "Member",
|
|
415
416
|
members: "Members",
|
|
417
|
+
inviteMembers: "Mitglieder einladen",
|
|
418
|
+
invited: "Eingeladen",
|
|
419
|
+
role: "Rolle",
|
|
420
|
+
status: "Status",
|
|
421
|
+
actions: "Aktionen",
|
|
422
|
+
noMembers: "Noch keine Mitglieder.",
|
|
416
423
|
memberCount_one: "{{count}} member",
|
|
417
424
|
memberCount_other: "{{count}} members",
|
|
418
425
|
youAreRole: "You are {{role}}",
|
|
@@ -401,9 +401,16 @@ const messages = {
|
|
|
401
401
|
join: "Join",
|
|
402
402
|
invitedByLabel: "Invited by {{name}}",
|
|
403
403
|
you: "You",
|
|
404
|
+
owner: "Owner",
|
|
404
405
|
admin: "Admin",
|
|
405
406
|
member: "Member",
|
|
406
407
|
members: "Members",
|
|
408
|
+
inviteMembers: "Invite members",
|
|
409
|
+
invited: "Invited",
|
|
410
|
+
role: "Role",
|
|
411
|
+
status: "Status",
|
|
412
|
+
actions: "Actions",
|
|
413
|
+
noMembers: "No members yet.",
|
|
407
414
|
memberCount_one: "{{count}} member",
|
|
408
415
|
memberCount_other: "{{count}} members",
|
|
409
416
|
youAreRole: "You are {{role}}",
|
|
@@ -417,9 +417,16 @@ const messages = {
|
|
|
417
417
|
join: "Join",
|
|
418
418
|
invitedByLabel: "Invited by {{name}}",
|
|
419
419
|
you: "You",
|
|
420
|
+
owner: "Propietario",
|
|
420
421
|
admin: "Administrador",
|
|
421
422
|
member: "Member",
|
|
422
423
|
members: "Members",
|
|
424
|
+
inviteMembers: "Invitar miembros",
|
|
425
|
+
invited: "Invitado",
|
|
426
|
+
role: "Rol",
|
|
427
|
+
status: "Estado",
|
|
428
|
+
actions: "Acciones",
|
|
429
|
+
noMembers: "Aún no hay miembros.",
|
|
423
430
|
memberCount_one: "{{count}} member",
|
|
424
431
|
memberCount_other: "{{count}} members",
|
|
425
432
|
memberCount_many: "{{count}} members",
|
|
@@ -415,9 +415,16 @@ const messages = {
|
|
|
415
415
|
join: "Join",
|
|
416
416
|
invitedByLabel: "Invited by {{name}}",
|
|
417
417
|
you: "You",
|
|
418
|
+
owner: "Propriétaire",
|
|
418
419
|
admin: "Admin",
|
|
419
420
|
member: "Member",
|
|
420
421
|
members: "Members",
|
|
422
|
+
inviteMembers: "Inviter des membres",
|
|
423
|
+
invited: "Invité",
|
|
424
|
+
role: "Rôle",
|
|
425
|
+
status: "Statut",
|
|
426
|
+
actions: "Actions",
|
|
427
|
+
noMembers: "Aucun membre pour le moment.",
|
|
421
428
|
memberCount_one: "{{count}} member",
|
|
422
429
|
memberCount_other: "{{count}} members",
|
|
423
430
|
memberCount_many: "{{count}} members",
|
|
@@ -397,9 +397,16 @@ const messages = {
|
|
|
397
397
|
join: "Join",
|
|
398
398
|
invitedByLabel: "Invited by {{name}}",
|
|
399
399
|
you: "You",
|
|
400
|
+
owner: "स्वामी",
|
|
400
401
|
admin: "व्यवस्थापक",
|
|
401
402
|
member: "Member",
|
|
402
403
|
members: "Members",
|
|
404
|
+
inviteMembers: "सदस्यों को आमंत्रित करें",
|
|
405
|
+
invited: "आमंत्रित",
|
|
406
|
+
role: "भूमिका",
|
|
407
|
+
status: "स्थिति",
|
|
408
|
+
actions: "कार्रवाइयां",
|
|
409
|
+
noMembers: "अभी कोई सदस्य नहीं है.",
|
|
403
410
|
memberCount_one: "{{count}} member",
|
|
404
411
|
memberCount_other: "{{count}} members",
|
|
405
412
|
youAreRole: "You are {{role}}",
|
|
@@ -402,9 +402,16 @@ const messages = {
|
|
|
402
402
|
join: "Join",
|
|
403
403
|
invitedByLabel: "Invited by {{name}}",
|
|
404
404
|
you: "You",
|
|
405
|
+
owner: "オーナー",
|
|
405
406
|
admin: "管理者",
|
|
406
407
|
member: "Member",
|
|
407
408
|
members: "Members",
|
|
409
|
+
inviteMembers: "メンバーを招待",
|
|
410
|
+
invited: "招待済み",
|
|
411
|
+
role: "ロール",
|
|
412
|
+
status: "ステータス",
|
|
413
|
+
actions: "操作",
|
|
414
|
+
noMembers: "メンバーはまだいません。",
|
|
408
415
|
memberCount_other: "{{count}} members",
|
|
409
416
|
youAreRole: "You are {{role}}",
|
|
410
417
|
changeRole: "役割を変更する",
|