Compare commits

..
Author SHA1 Message Date
Claude 09ef8449aa Security: add session validation and returnPath sanitization to impersonation hook
Add structural validation for deserialized sessionStorage data before
restoring admin tokens, and validate returnPath through existing
isValidReturnToPath utility to prevent navigation to excluded routes.

https://claude.ai/code/session_01CmAwvNXPqD3j1od8vro8pA
2026-04-12 13:55:42 +00:00
Claude 2ef9ab00a2 Merge remote-tracking branch 'origin/claude/fix-ci-pipeline-R7nz4' into claude/security-review-pr-19597-AcR1G 2026-04-12 13:52:38 +00:00
claude[bot]andFélix Malfait 2272e4f247 Remove unrelated SettingsAdminWorkspaceChatThread from this PR
This file was added in the base branch but is unrelated to the
impersonation refactoring. It should be submitted in a separate PR.

Co-authored-by: Félix Malfait <[email protected]>
2026-04-12 12:28:16 +00:00
Claude f33973bc24 Add try-catch around JSON.parse in stopImpersonating
If sessionStorage contains corrupted data, fall back to signOut()
instead of leaving the user stuck in the impersonated session.

https://claude.ai/code/session_01SdHcodsLnF7R6Zg8fUtKj8
2026-04-12 12:22:58 +00:00
Claude 777a031fd2 Refactor impersonation to use token restoration instead of session destruction
Replace useImpersonationAuth with useImpersonationSession that stores the
admin's original tokens in sessionStorage before swapping to the impersonated
user's session. "Stop Impersonating" now restores the original tokens and
navigates back instead of signing out completely.

- Same-workspace impersonation (admin panel + Members page): in-place token
  swap with Apollo cache reset, restorable via "Stop Impersonating"
- Cross-workspace impersonation (admin panel): still opens new tab via redirect
- Stop Impersonating: restores original session without re-login, falls back
  to window.close() or signOut() for cross-workspace tabs

https://claude.ai/code/session_01SdHcodsLnF7R6Zg8fUtKj8
2026-04-12 12:20:06 +00:00
Claude 06d8719e07 Fix lint errors in SettingsAdminWorkspaceChatThread
- Merge duplicate 'twenty-ui/layout' imports (Card and Section)
- Use explicit null check instead of truthiness for toolName filter

https://claude.ai/code/session_01SdHcodsLnF7R6Zg8fUtKj8
2026-04-12 12:19:13 +00:00
Charles BochetandGitHub 3ae63f0574 Fix syncApplication failing when navigation menu item child is listed before folder in manifest (#19599)
## Summary

- Fix `syncApplication` crashing with `ENTITY_NOT_FOUND` when a
navigation menu item child (with `folderUniversalIdentifier`) appears
before its folder in the manifest's `navigationMenuItems` array
- Add a generic topological sort in
`WorkspaceEntityMigrationBuilderService.validateAndBuild()` that detects
self-referential FKs from `ALL_MANY_TO_ONE_METADATA_RELATIONS` and
ensures parents are created before children
- This also covers other self-referential entities:
`viewFilterGroup.parentViewFilterGroup`,
`fieldMetadata.relationTargetFieldMetadata`, and
`rowLevelPermissionPredicateGroup.parentRowLevelPermissionPredicateGroup`

## Root cause

The builder iterated `createdFlatEntityMaps.byUniversalIdentifier` in
insertion order (from the manifest). Validation passed because it
checked both optimistic maps and remaining-to-create maps. But the
runner processed create actions sequentially, so
`resolveUniversalRelationIdentifiersToIds` threw when the folder hadn't
been created yet.
2026-04-12 12:35:38 +02:00
Charles BochetandGitHub c8f5ecb2b6 Add APPLICATION_LOG_DRIVER=CONSOLE to twenty-app-dev container (#19600)
## Summary
- Enable application log console output in the `twenty-app-dev` Docker
image by adding `APPLICATION_LOG_DRIVER=CONSOLE` to the Dockerfile ENV
block
- Rename `APPLICATION_LOG_DRIVER_TYPE` to `APPLICATION_LOG_DRIVER` and
`ApplicationLogDriverType` to `ApplicationLogDriver` for consistency
with all other driver config variables (`EMAIL_DRIVER`, `LOGGER_DRIVER`,
`CAPTCHA_DRIVER`, etc.)
- Add `APPLICATION_LOG_DRIVER` to `.env.example`
2026-04-12 11:55:38 +02:00
Claude 91b0937315 Fix CI lint/typecheck failures and admin panel UI issues
- Remove undefined useNavigate reference in SettingsAdminWorkspaceDetail
  (was crashing at runtime since useNavigate was not imported)
- Replace onCompleted callback with useEffect for Apollo useQuery
  compatibility, fix DeepPartialObject type mismatch
- Replace onClick+navigate with to prop on TableRow in SettingsAdminAI
  for accessible link behavior (cmd+click to open in new tab)
- Right-align Workspace column in Recent Users table
- Fix prettier formatting across changed files

https://claude.ai/code/session_01SdHcodsLnF7R6Zg8fUtKj8
2026-04-12 06:27:48 +00:00
55b1624210 Convert AI chat state atoms to component family states (#19585)
## Summary
Refactored AI chat state management to use component family states
instead of global atoms. This change enables proper state isolation per
chat thread, preventing state leakage between different chat instances.

## Key Changes

- **Converted global atoms to component family states:**
  - `agentChatErrorState` → `agentChatErrorComponentFamilyState`
- `agentChatIsStreamingState` →
`agentChatIsStreamingComponentFamilyState`
- `agentChatFirstLiveSeqState` →
`agentChatFirstLiveSeqComponentFamilyState`
- `agentChatHandleEventCallbackState` →
`agentChatHandleEventCallbackComponentFamilyState`
  - `agentChatUsageState` → `agentChatUsageComponentFamilyState`
- `currentAIChatThreadTitleState` →
`currentAIChatThreadTitleComponentFamilyState`

- **Updated state access patterns:**
- Introduced `useAtomComponentFamilyStateCallbackState` hook to get
family state callbacks
- Changed from direct atom access to family key-based access using `{
threadId }` as the family key
- Updated all components and hooks to use the new family state patterns

- **Removed instance ID dependency:**
  - Eliminated `AGENT_CHAT_INSTANCE_ID` constant usage
- Simplified state access by using thread ID directly as the family key

- **Updated affected components and hooks:**
- `useAgentChatSubscription`: Now creates family state atoms per thread
- `AgentChatMessagesFetchEffect`: Uses family state callbacks for event
handling
- `AgentChatThreadInitializationEffect`: Sets family state values per
thread
  - `useAIChatThreadClick`: Updates family states when switching threads
- `AIChatErrorUnderMessageList`, `AIChatLastMessageWithStreamingState`,
`AIChatEmptyState`, `AIChatStandaloneError`, `SendMessageButton`,
`AIChatContextUsageButton`, `SidePanelAskAIInfo`: Updated to use family
state values with thread ID

## Implementation Details

- All new component family states use
`AgentChatComponentInstanceContext` for proper component-level isolation
- Family key structure: `{ threadId: string | null }`
- Removed `disposed` flag logic as it's no longer needed with proper
state isolation
- Updated dependency arrays in hooks to include family callback
functions

https://claude.ai/code/session_01D8syiJtCXu5bEHSr5KYkCt

---------

Co-authored-by: Claude <[email protected]>
2026-04-12 07:39:12 +02:00
c268a50e4e i18n - translations (#19591)
Created by Github action

---------

Co-authored-by: github-actions <[email protected]>
2026-04-11 22:12:58 +02:00
4c57352450 Improve sensitive config variable masking and editing UX (#19578)
## Summary
This PR enhances the handling of sensitive configuration variables by
improving masking logic and user experience when editing them. It adds
metadata-aware masking for dynamically marked sensitive variables and
clears sensitive values when entering edit mode.

## Key Changes

- **Backend masking improvements**: Updated `maskSensitiveValue()` to
accept metadata parameter, enabling masking of variables marked as
sensitive via metadata (not just predefined masking config). Sensitive
non-string values are masked as `********`.

- **Edit mode UX**: When editing a sensitive variable, the value field
is now cleared on entering edit mode to prevent exposing masked values
and ensure users intentionally provide new secret values.

- **Form state tracking**: Enhanced `useConfigVariableForm()` hook to
accept an `isEditing` parameter and properly track value changes for
sensitive variables during edit operations.

- **Input placeholder**: Updated placeholder text for sensitive variable
inputs to show `Enter a new secret value` instead of the generic
database storage message, providing clearer intent to users.

## Implementation Details

- The `maskSensitiveValue()` method now checks both predefined masking
configurations and runtime metadata to determine if a value should be
masked
- Sensitive string values use LAST_N_CHARS strategy (4 characters),
while non-string values are masked uniformly
- The form's `hasValueChanged` flag is set to true when editing
sensitive variables to ensure proper validation and submission handling

https://claude.ai/code/session_01JiTckmuVJMQWpJ7TUGwsqb

---------

Co-authored-by: Claude <[email protected]>
2026-04-11 22:07:05 +02:00
Félix MalfaitandClaude Opus 4.6 c30d4ea8f5 Fix admin-panel test missing repository mocks and lint issues
- Add WorkspaceEntity, UserWorkspaceEntity, FeatureFlagEntity,
  AgentChatThreadEntity, AgentMessageEntity repository mocks to
  admin-panel.service.spec.ts
- Replace navigate() with TableRow `to` prop in workspace detail chats tab
- Fix prettier formatting in agent-chat.service.ts

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-04-11 21:35:47 +02:00
Félix MalfaitandGitHub c5c77bed7d Merge branch 'main' into claude/recursing-turing 2026-04-11 21:30:07 +02:00
Charles BochetandGitHub b37ef3e7da Add app-path input to deploy and install composite actions (#19589)
Supports monorepo layouts where the app isn't at the repo root. Defaults
to '.' for backward compatibility.

Made-with: Cursor
2026-04-11 17:45:42 +02:00
Félix MalfaitandClaude Opus 4.6 00e6f55c8d Evolve admin panel: dashboard tables, user detail page, members tab, chat fixes
- Add recent users and top workspaces tables to admin panel General tab with fuzzy search
- Add user detail page with user info, workspace tabs, and impersonate button
- Add members tab on workspace detail page with impersonate per user
- Move feature flags to dedicated tab on workspace detail page
- Add creation date and activation status to user/workspace info cards
- Fix chat thread viewer to show assistant messages (query by threadId only)
- Use LazyMarkdownRenderer for assistant messages in chat thread viewer
- Fix root cause of assistant messages having null workspaceId by using
  Repository.insert() instead of .create()/.save() to bypass TypeORM
  @ManyToOne/@JoinColumn column resolution issue

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-04-11 16:07:57 +02:00
Charles BochetandGitHub 4d877d072d Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.22.0-canary.3 (#19587)
## Summary
- Bump `twenty-sdk`, `twenty-client-sdk`, and `create-twenty-app` from
`1.22.0-canary.2` to `1.22.0-canary.3` for publishing.

## Test plan
- Version-only change, no code modifications.

Made with [Cursor](https://cursor.com)
2026-04-11 16:04:46 +02:00
Charles BochetandGitHub baf2fc4cc9 Fix sdk-e2e-test: ensure DB is ready before server starts (#19583)
## Summary

- The `sdk-e2e-test` CI job has been failing since at least April 9th
because the nx dependency graph runs `database:reset` and
`start:ci-if-needed` in **parallel** — neither depends on the other. The
server starts before the DB tables are created, crashes with `relation
"core.keyValuePair" does not exist`, and `wait-on` times out after 10
minutes.
- Replace the `nx-affected` orchestration for e2e with explicit
**sequential** CI steps: build → create DB → reset DB → start server →
wait for health → run tests.
- Add server log dump on failure for easier future debugging.

## Root cause

In `packages/twenty-sdk/project.json`, the `test:e2e` target has:

```json
"dependsOn": [
  "build",
  { "target": "database:reset", "projects": "twenty-server" },
  { "target": "start:ci-if-needed", "projects": "twenty-server" }
]
```

Since `database:reset` and `start:ci-if-needed` don't depend on each
other, nx can (and does) run them concurrently. `start:ci-if-needed`
fires `nohup nest start &` and immediately completes. The server process
tries to query `core.keyValuePair` before `database:reset` creates it →
crash → wait-on timeout → job failure.
2026-04-11 16:02:12 +02:00
3b55026452 Improve NullCheckEnum filter descriptions with usage examples (#19581)
## Summary
Enhanced the documentation and user guidance for null/empty value
filters across all field types by updating the `NullCheckEnum`
descriptions in the field filter Zod schemas. The descriptions now
provide clear, actionable guidance on how to use the "NULL" and
"NOT_NULL" filter options.

## Changes
- Updated 20+ field type filter descriptions to replace generic "Is null
or not null" text with more descriptive guidance
- New descriptions follow the pattern: "Check for missing or empty
[field type]. Use "NULL" to find records with no [value], "NOT_NULL" for
records with a [value]"
- Applied consistent messaging across all field types including:
  - Basic types: UUID, text, number, boolean, date
  - Complex types: select, multi-select, rating
- Composite types: amount, currency, first name, last name, street,
city, country, email, phone, link URL
  - Relationship and JSON fields
- Specialized descriptions for composite fields (e.g., "Check for
missing or empty amount" for currency amount field)

## Benefits
- Improved API documentation clarity for developers using field filters
- Reduced ambiguity about NULL vs NOT_NULL filter behavior
- Better discoverability of filtering capabilities through schema
descriptions
- Consistent messaging across all field types for improved user
experience

https://claude.ai/code/session_0139Nb5bZykacNE69GQsFSrr

Co-authored-by: Claude <[email protected]>
2026-04-11 14:50:27 +02:00
Charles BochetandGitHub 53065f241f Exchange clientSecret for tokens after app registration + bump canary (#19582)
## Summary

- **Fix `createApplicationRegistration` flow**: The server's
`createApplicationRegistration` mutation returns a `clientSecret`, not
`accessToken`/`refreshToken` directly. The SDK now correctly requests
`clientSecret` and immediately performs an OAuth `client_credentials`
exchange to obtain `appAccessToken` and `appRefreshToken`, then stores
them in config.
- **New `exchangeCredentialsForTokens` helper**: Shared by both `dev`
and `dev --once` flows. Takes `clientId` + `clientSecret`, calls
`/oauth/token` with `client_credentials` grant, and persists the
resulting tokens.
- **Bump `twenty-sdk`, `twenty-client-sdk`, `create-twenty-app` to
`1.22.0-canary.2`**

## Context

The `1.22.0-canary.1` SDK release expected
`createApplicationRegistration` to return `accessToken`/`refreshToken`
directly, but the `v1.22.0` server returns `clientSecret`. This caused
`yarn twenty dev` and `yarn twenty dev --once` to fail with "No
registration found" errors.
2026-04-11 12:26:18 +02:00
Thomas des FrancsandGitHub 300be990b0 halftone v2 (#19573)
## Summary
- Add Playwright inspection scripts for problem canvas export, chain
logging, and metrics capture
- Save updated markdown snapshots and screenshot artifacts for homepage
and problem section debugging
- Include generated browser profile data used during the investigation

## Testing
- Not run (not requested)
2026-04-11 10:00:24 +00:00
Charles BochetandGitHub 0a76db94bc Bump twenty-sdk, twenty-client-sdk, create-twenty-app to 1.22.0-canary.1 (#19580)
## Summary
- Bumps `twenty-sdk`, `twenty-client-sdk`, and `create-twenty-app`
package versions from `0.9.0` to `1.22.0-canary.1` for the 1.22 canary
release.

## Test plan
- [ ] Verify packages build successfully (`npx nx build twenty-sdk`,
`npx nx build twenty-client-sdk`, `npx nx build create-twenty-app`)
- [ ] Verify `create-twenty-app` scaffolds new apps with the correct SDK
version


Made with [Cursor](https://cursor.com)
2026-04-11 11:34:55 +02:00
Félix MalfaitandGitHub bbf875d21d Merge branch 'main' into claude/recursing-turing 2026-04-11 11:25:14 +02:00
Charles BochetandGitHub c26c0b9d71 Use app's own OAuth credentials for CoreApiClient generation (#19563)
## Summary

- **SDK (`dev` & `dev --once`)**: After app registration, the CLI now
obtains an `APPLICATION_ACCESS` token via `client_credentials` grant
using the app's own `clientId`/`clientSecret`, and uses that token for
CoreApiClient schema introspection — instead of the user's
`config.accessToken` which returns the full unscoped schema.
- **Config**: `oauthClientSecret` is now persisted alongside
`oauthClientId` in `~/.twenty/config.json` when creating a new app
registration, so subsequent `dev`/`dev --once` runs can obtain fresh app
tokens without re-registration.
- **CI action**: `spawn-twenty-app-dev-test` now outputs a proper
`API_KEY` JWT (signed with the seeded dev workspace secret) instead of
the previous hardcoded `ACCESS` token — giving consumers a real API key
rather than a user session token.

## Motivation

When developing Twenty apps, `yarn twenty dev` was using the CLI user's
OAuth token for GraphQL schema introspection during CoreApiClient
generation. This token (type `ACCESS`) has no `applicationId` claim, so
the server returns the **full workspace schema** — including all objects
— rather than the scoped schema the app should see at runtime (filtered
by `applicationId`).

This caused a discrepancy: the generated CoreApiClient contained fields
the app couldn't actually query at runtime with its `APPLICATION_ACCESS`
token.

By switching to `client_credentials` grant, the SDK now introspects with
the same token type the app will use in production, ensuring the
generated client accurately reflects the app's runtime capabilities.
2026-04-11 11:24:28 +02:00
Félix MalfaitandClaude Opus 4.6 99da104d94 Add admin panel workspace detail page with chat thread viewer
Introduce a workspace detail page accessible from the AI usage table
in the admin panel. The page has two tabs: Info (reusing existing
SettingsAdminWorkspaceContent) and Chats (listing AI chat threads,
gated by workspace allowImpersonation flag). Chat threads are clickable
to view the full conversation in a read-only message view.

Backend: new GraphQL queries (workspaceLookupAdminPanel,
getAdminWorkspaceChatThreads, getAdminChatThreadMessages) with
business logic in AdminPanelService and security checks via
assertWorkspaceAllowsImpersonation helper.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-04-11 10:53:54 +02:00
f52d66b960 i18n - translations (#19570)
Created by Github action

---------

Co-authored-by: github-actions <[email protected]>
2026-04-10 19:19:17 +02:00
65b2baca7a Remove IS_USAGE_ANALYTICS_ENABLED feature flag (#19566)
## Summary
This PR removes the `IS_USAGE_ANALYTICS_ENABLED` feature flag and makes
usage analytics features universally available. The feature flag guard
has been removed from the usage analytics resolver and all conditional
rendering based on this flag has been eliminated.

## Key Changes
- **Removed feature flag dependency**: Deleted
`IS_USAGE_ANALYTICS_ENABLED` from the `FeatureFlagKey` enum in
`twenty-shared`
- **Updated AI Usage tab**: Simplified `SettingsAIUsageTab` to remove
enterprise access checks and feature flag conditionals, now only checks
if ClickHouse is configured
- **Updated Usage Analytics section**: Removed feature flag guard from
`SettingsUsageAnalyticsSection` and added loading/empty state handling
- **Updated AI settings navigation**: Made the Usage tab always visible
in the AI settings tabs, removing conditional rendering based on feature
flag
- **Updated Billing Credits section**: Removed feature flag check before
showing the "View usage" button
- **Updated Settings routes**: Removed `SettingsProtectedRouteWrapper`
with feature flag requirement from usage routes
- **Updated GraphQL resolver**: Removed `@RequireFeatureFlag` decorator
and `FeatureFlagGuard` from the `getUsageAnalytics` query
- **Updated dev seeder**: Removed the feature flag seed entry for
`IS_USAGE_ANALYTICS_ENABLED`

## Implementation Details
- Usage analytics now gracefully handles loading states with
`UsageSectionSkeleton`
- Empty state messaging is shown when no usage data is available yet
- ClickHouse configuration remains the only requirement for usage
analytics functionality
- All enterprise-specific gating for AI usage analytics has been removed
in favor of ClickHouse availability checks

https://claude.ai/code/session_01MRFVXtquL3wS7qmQkDU3AT

---------

Co-authored-by: Claude <[email protected]>
2026-04-10 19:12:33 +02:00
66d9f92e60 i18n - translations (#19569)
Created by Github action

Co-authored-by: github-actions <[email protected]>
2026-04-10 18:16:40 +02:00
Abdul RahmanandGitHub 8dd172ba00 Fix: Select next sidebar menu item after removing current item (#19505) 2026-04-10 16:00:59 +00:00
Abdul RahmanandGitHub 83653a463c fix: side panel close animation cleanup not firing due to invalid CSS transition (#19556)
## Summary

Fixes the side panel close animation cleanup
(`sidePanelCloseAnimationCompleteCleanup`) never running during the
close transition.

This eventually fixes the issue where in navbar edit mode, clicking on a
nav item sometimes doesn't get selected, the side panel opens but shows
`Select a navigation item to edit` instead of the selected item's
settings. The root cause was stale `isSidePanelClosing` state from a
previous close that wasn't cleaned up, causing the next open to run
cleanup synchronously (without emitting the close event), which
interfered with the navigation item selection flow.

### Root cause

The CSS `transition` on `StyledSidePanelWrapper` used
`${themeCssVariables.animation.duration.normal}s`, which Linaria
converts to a CSS custom property value like `width
var(--t-animation-duration-normal)s`. After CSS variable substitution,
`0.3` and `s` become two separate tokens, not a valid `<time>` dimension
(`0.3s`). The browser rejects the entire transition declaration, falls
back to `all 0s`, and the width change happens instantly with no
`transitionend` event.

### Fix

- Use `calc(var(--t-animation-duration-normal) * 1s)` to properly
construct the `<time>` value (consistent with ~30 other usages in the
codebase).
- Filter `handleTransitionEnd` to only process `width` transitions on
the wrapper element itself, ignoring bubbled child `background-color`
transitions.


## Before


https://github.com/user-attachments/assets/496ccbff-dc96-487d-a994-451dbf2a5165




## After


https://github.com/user-attachments/assets/78255240-1d7d-42cd-9b56-25627613883a
2026-04-10 15:58:25 +00:00
8c4a6cd663 Replace AGENT_CHAT_UNKNOWN_THREAD_ID with null for thread state (#19552)
## Summary
This PR refactors the AI chat thread state management to use `null`
instead of a sentinel string value (`AGENT_CHAT_UNKNOWN_THREAD_ID`) to
represent an uninitialized or new chat thread. This improves type safety
and makes the code more idiomatic by using `null` to represent the
absence of a value.

## Key Changes
- **Removed sentinel constant**: Deleted `AGENT_CHAT_UNKNOWN_THREAD_ID`
constant and replaced all usages with `null`
- **Updated state types**: Changed `currentAIChatThreadState`,
`agentChatLastDiffSyncedThreadState`, and
`agentChatDisplayedThreadState` to use `string | null` type with `null`
as default value
- **Updated component family states**: Modified message-related state
families to accept `threadId: string | null` instead of `threadId:
string`
- **Refined null checks**: Added explicit `null` checks in:
- `AgentChatMessagesFetchEffect`: Updated `isNewThread` logic to check
for `null` first
- `useAIChatThreadClick` and `useSwitchToNewAIChat`: Added guards to
only save drafts when `currentAIChatThread !== null`
- `AgentChatThreadInitializationEffect`: Added null check before UUID
validation
- `useEnsureAgentChatThreadIdForSend`: Added null check before comparing
with draft key
- **Updated fallback logic**: Used nullish coalescing operator (`??`) in
`AIChatTab` and `useAIChatEditor` to default to
`AGENT_CHAT_NEW_THREAD_DRAFT_KEY` when thread is null
- **Enhanced refetch safety**: Added early return in
`handleRefetchMessages` to prevent refetching when in new thread state

## Implementation Details
- The change maintains backward compatibility by treating `null` the
same way the code previously treated `AGENT_CHAT_UNKNOWN_THREAD_ID`
- All draft saving operations now safely check for null before
attempting to store drafts
- The nullish coalescing pattern (`currentAIChatThread ??
AGENT_CHAT_NEW_THREAD_DRAFT_KEY`) ensures proper fallback behavior when
accessing draft storage

https://claude.ai/code/session_01Pz8KCygSNgBPYsndbMq8f7

---------

Co-authored-by: Claude <[email protected]>
2026-04-10 16:34:03 +02:00
Raphaël BosiandGitHub f99c05f0e8 Fix merge command being available in exclusion mode (#19546)
Fixes
https://twenty-v7.sentry.io/issues/7398810663/?project=4507072563183616

## Bug description

The mergeMultipleRecords command's conditionalAvailabilityExpression
used numberOfSelectedRecords >= 2, which evaluates correctly in both
selection and exclusion (Select All) modes. However, when the command
executes, buildHeadlessCommandContextApi returns an empty
selectedRecords array in exclusion mode because it can't synchronously
resolve record IDs from an "all minus excluded" set. This caused
MergeMultipleRecordsCommand to throw on the empty array guard.

## Fix

Prepended not isSelectAll and to the merge command's conditional
expression, preventing it from appearing when records are selected via
Select All.
2026-04-10 14:12:46 +00:00
Paul RastoinandGitHub c99db7d9c6 Fix server-validation ci pending instance command detection (#19558)
https://github.com/twentyhq/twenty/actions/runs/24246052659/job/70792870185
2026-04-10 13:53:56 +00:00
Paul RastoinandGitHub 5a22cc88c5 database:reset depends on database:init that runs slow instance commands (#19557)
```ts
Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] LogicFunctionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] ApplicationUpgradeModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkspaceModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] IteratorActionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] DelayActionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] RestApiCoreModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] RecordCRUDActionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkflowTriggerModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] TimelineMessagingModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkflowVersionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] UserModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkflowToolsModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] ApplicationOAuthModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] BillingWebhookModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] AiAgentExecutionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] AiAgentActionModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] ToolProviderModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] AiAgentMonitorModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkflowExecutorModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkflowRunnerModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] McpModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] AiChatModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] WorkflowApiModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [InstanceLoader] AuthModule dependencies initialized
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [DatabaseConfigDriver] [INIT] Loading initial config variables from database
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [DatabaseConfigDriver] [INIT] Config variables loaded: 1 values found in DB, 83 falling to env vars/defaults
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [UpgradeCommandRegistryService] Registered 3 fast instance, 0 slow instance, and 14 workspace command(s) for 1.21.0
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [UpgradeCommandRegistryService] Registered 4 fast instance, 1 slow instance, and 3 workspace command(s) for 1.22.0
[Nest] 46347  - 04/10/2026, 3:37:43 PM     LOG [GenerateInstanceCommandCommand] Generating fast instance command for version 1.22.0...
[Nest] 46347  - 04/10/2026, 3:37:43 PM    WARN [GenerateInstanceCommandCommand] No changes in database schema were found - cannot generate a migration.

———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

 NX   Successfully ran target database:migrate:generate for project twenty-server and 8 tasks it depends on (11s)

      With additional flags:
        --name=martmull

```
2026-04-10 15:44:16 +02:00
Paul RastoinandGitHub 9a403b84f3 database:init:prod triggers instance slow command too (#19555)
When creating a db from scrath we still need to run the slow instance
command so the associated queries are still applied to the empty db

Please note that by default if there's no workspace the instance slow
runner will skip the runDataMigration part
2026-04-10 13:19:19 +00:00
Paul RastoinandGitHub a82d078906 Lambda build update instead of delete existing logic function while building (#19116)
# Introduction
Avoid having a time window where the logic function is unavailable while
being built, by implementing an update flow instead of delete and create
everytime

fixes https://twenty-v7.sentry.io/issues/7371110591/

**Note: executor code propagation (pre-existing limitation)**

The Lambda executor shim
(`logic-function-drivers/constants/executor/index.mjs`) is only deployed
when a Lambda is first created. If this file is edited, the change won't
propagate to existing Lambdas — neither before nor after this PR. A
follow-up could compare the deployed `CodeSha256` against a local
checksum to detect drift and trigger a code update via
`UpdateFunctionCodeCommand`.

Should implem as code versioning or checksum diffing
2026-04-10 12:56:08 +00:00
Yassir S.andGitHub 61720470c5 fix: expand kanban column drop zone to full height (#18897)
## Summary
- Added `flex: 1` to `StyledColumnContainer` in `RecordBoardColumns.tsx`
- The column wrapper wasn't stretching vertically, so the droppable area
only covered the top of each column where cards existed
- Now the entire column height is a valid drop target

## Test plan
- [ ] Open a board/kanban view
- [ ] Drag a card from one column
- [ ] Drop it in the lower/empty area of another column
- [ ] Verify the drop registers correctly

Fixes #18842
2026-04-10 12:54:45 +00:00
Thomas TrompetteandGitHub 31baf52528 Workflow - Avoid billing skipped steps (#19547)
As title
2026-04-10 12:49:14 +00:00
EtienneandGitHub 217957f2a1 Optim - Increase connection idle timeout (#19553)
<img width="1486" height="55" alt="Screenshot 2026-04-10 at 14 20 19"
src="https://github.com/user-attachments/assets/29bbd120-e183-4ea3-a6c5-5cd876a81ef5"
/>
<img width="1490" height="55" alt="Screenshot 2026-04-10 at 14 20 14"
src="https://github.com/user-attachments/assets/0455b6c7-032a-4cd7-8741-fd7b73e537e5"
/>
<img width="1482" height="57" alt="Screenshot 2026-04-10 at 14 20 07"
src="https://github.com/user-attachments/assets/18699de8-4e1c-44b8-bcb9-871ed1e6e6d0"
/>
On last 7 days
2026-04-10 12:43:19 +00:00
253 changed files with 13175 additions and 8277 deletions
+8 -1
View File
@@ -8,6 +8,10 @@ inputs:
api-key:
description: API key or access token for the target instance
required: true
app-path:
description: Path to the app directory (relative to repo root). Defaults to repo root.
required: false
default: '.'
runs:
using: composite
@@ -19,11 +23,13 @@ runs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
node-version-file: '${{ inputs.app-path }}/.nvmrc'
cache: yarn
cache-dependency-path: '${{ inputs.app-path }}/yarn.lock'
- name: Install dependencies
shell: bash
working-directory: ${{ inputs.app-path }}
run: yarn install --immutable
- name: Configure remote
@@ -43,4 +49,5 @@ runs:
- name: Deploy
shell: bash
working-directory: ${{ inputs.app-path }}
run: yarn twenty deploy --remote target
@@ -8,6 +8,10 @@ inputs:
api-key:
description: API key or access token for the target workspace
required: true
app-path:
description: Path to the app directory (relative to repo root). Defaults to repo root.
required: false
default: '.'
runs:
using: composite
@@ -19,11 +23,13 @@ runs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
node-version-file: '${{ inputs.app-path }}/.nvmrc'
cache: yarn
cache-dependency-path: '${{ inputs.app-path }}/yarn.lock'
- name: Install dependencies
shell: bash
working-directory: ${{ inputs.app-path }}
run: yarn install --immutable
- name: Configure remote
@@ -43,4 +49,5 @@ runs:
- name: Install
shell: bash
working-directory: ${{ inputs.app-path }}
run: yarn twenty install --remote target
@@ -15,8 +15,8 @@ outputs:
description: 'URL where the Twenty test server can be reached'
value: http://localhost:2021
api-key:
description: 'API key for the Twenty test instance'
value: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4
description: 'API key (type: API_KEY) for the seeded Twenty dev workspace'
value: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC0xYzI1LTRkMDItYmYyNS02YWVjY2Y3ZWE0MTkiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWMyNS00ZDAyLWJmMjUtNmFlY2NmN2VhNDE5IiwiaWF0IjoxNzM1Njg5NjAwLCJleHAiOjQ4OTE0NDk2MDAsImp0aSI6IjIwMjAyMDIwLWY0MDEtNGQ4YS1hNzMxLTY0ZDAwN2MyN2JhZCJ9.bfQjfyN0NEtTCLE_xPyNcwonDzlSXFoP8kdCQTdnuDc
runs:
using: 'composite'
+17 -7
View File
@@ -19,6 +19,7 @@ jobs:
files: |
packages/twenty-sdk/**
packages/twenty-server/**
.github/workflows/ci-sdk.yaml
!packages/twenty-sdk/package.json
sdk-test:
needs: changed-files-check
@@ -69,7 +70,6 @@ jobs:
ports:
- 6379:6379
env:
NODE_ENV: test
TWENTY_API_URL: http://localhost:3000
TWENTY_API_KEY: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik
steps:
@@ -79,16 +79,26 @@ jobs:
fetch-depth: 10
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build
- name: Build SDK
run: npx nx build twenty-sdk
- name: Server / Create Test DB
- name: Setup server environment
run: npx nx reset:env:e2e-testing-server twenty-server
- name: Create databases
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
- name: Setup database
run: npx nx run twenty-server:database:reset
- name: Start server
run: nohup npx nx start:ci twenty-server > /tmp/twenty-server.log 2>&1 &
- name: Wait for server to be ready
run: npx wait-on http://localhost:3000/healthz --timeout 120000 --interval 1000
- name: SDK / Run e2e Tests
uses: ./.github/actions/nx-affected
with:
tag: scope:sdk
tasks: test:e2e
run: NODE_ENV=test npx vitest run --config ./vitest.e2e.config.ts
working-directory: packages/twenty-sdk
- name: Server / Dump logs on failure
if: failure()
run: tail -100 /tmp/twenty-server.log || echo "No server log file found"
ci-sdk-status-check:
if: always() && !cancelled()
timeout-minutes: 5
+9 -6
View File
@@ -144,15 +144,18 @@ jobs:
exit 1
- name: Server / Check for Pending Migrations
run: |
CORE_MIGRATION_OUTPUT=$(npx nx database:migrate:generate twenty-server -- --name core-migration-check || true)
npx nx database:migrate:generate twenty-server -- --name pending-migration-check || true
CORE_MIGRATION_FILE=$(ls packages/twenty-server/src/database/typeorm/core/migrations/common/*core-migration-check.ts 2>/dev/null || echo "")
if [ -n "$CORE_MIGRATION_FILE" ]; then
if ! git diff --quiet; then
echo "::error::Unexpected migration files were generated. Please run 'npx nx database:migrate:generate twenty-server -- --name <migration-name>' and commit the result."
echo "$CORE_MIGRATION_OUTPUT"
echo ""
echo "The following migration changes were detected:"
echo "==================================================="
git diff
echo "==================================================="
echo ""
rm -f packages/twenty-server/src/database/typeorm/core/migrations/common/*core-migration-check.ts
git checkout -- .
exit 1
fi
+1
View File
@@ -53,3 +53,4 @@ mcp.json
TRANSLATION_QA_REPORT.md
.playwright-mcp/
.playwright-cli/
output/playwright/
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "0.9.0",
"version": "1.22.0-canary.3",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
@@ -17,8 +17,7 @@ export default defineConfig({
TWENTY_API_URL: process.env.TWENTY_API_URL ?? 'http://localhost:2020',
TWENTY_API_KEY:
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC0xYzI1LTRkMDItYmYyNS02YWVjY2Y3ZWE0MTkiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWMyNS00ZDAyLWJmMjUtNmFlY2NmN2VhNDE5IiwiaWF0IjoxNzM1Njg5NjAwLCJleHAiOjQ4OTE0NDk2MDAsImp0aSI6IjIwMjAyMDIwLWY0MDEtNGQ4YS1hNzMxLTY0ZDAwN2MyN2JhZCJ9.bfQjfyN0NEtTCLE_xPyNcwonDzlSXFoP8kdCQTdnuDc',
},
},
});
@@ -17,8 +17,7 @@ export default defineConfig({
TWENTY_API_URL: process.env.TWENTY_API_URL ?? 'http://localhost:2020',
TWENTY_API_KEY:
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC0xYzI1LTRkMDItYmYyNS02YWVjY2Y3ZWE0MTkiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWMyNS00ZDAyLWJmMjUtNmFlY2NmN2VhNDE5IiwiaWF0IjoxNzM1Njg5NjAwLCJleHAiOjQ4OTE0NDk2MDAsImp0aSI6IjIwMjAyMDIwLWY0MDEtNGQ4YS1hNzMxLTY0ZDAwN2MyN2JhZCJ9.bfQjfyN0NEtTCLE_xPyNcwonDzlSXFoP8kdCQTdnuDc',
},
},
});
@@ -17,8 +17,7 @@ export default defineConfig({
TWENTY_API_URL: process.env.TWENTY_API_URL ?? 'http://localhost:2020',
TWENTY_API_KEY:
process.env.TWENTY_API_KEY ??
// Tim Apple (admin) access token for twenty-app-dev
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ1c2VySWQiOiIyMDIwMjAyMC05ZTNiLTQ2ZDQtYTU1Ni04OGI5ZGRjMmIwMzQiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtMDY4Ny00YzQxLWI3MDctZWQxYmZjYTk3MmE3IiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtOWUzYi00NmQ0LWE1NTYtODhiOWRkYzJiMDM1IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjQ5MDQ4ODE3MDR9.9S4wc0MOr5iczsomlFxZdOHD1IRDS4dnRSwNVNpctF4',
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC0xYzI1LTRkMDItYmYyNS02YWVjY2Y3ZWE0MTkiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWMyNS00ZDAyLWJmMjUtNmFlY2NmN2VhNDE5IiwiaWF0IjoxNzM1Njg5NjAwLCJleHAiOjQ4OTE0NDk2MDAsImp0aSI6IjIwMjAyMDIwLWY0MDEtNGQ4YS1hNzMxLTY0ZDAwN2MyN2JhZCJ9.bfQjfyN0NEtTCLE_xPyNcwonDzlSXFoP8kdCQTdnuDc',
},
},
});
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-client-sdk",
"version": "0.9.0",
"version": "1.22.0-canary.3",
"sideEffects": false,
"license": "AGPL-3.0",
"scripts": {
@@ -1741,7 +1741,6 @@ enum FeatureFlagKey {
IS_JUNCTION_RELATIONS_ENABLED
IS_DRAFT_EMAIL_ENABLED
IS_CONNECTED_ACCOUNT_MIGRATED
IS_USAGE_ANALYTICS_ENABLED
IS_RICH_TEXT_V1_MIGRATED
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED
IS_RECORD_TABLE_WIDGET_ENABLED
@@ -1437,7 +1437,7 @@ export interface PublicFeatureFlag {
__typename: 'PublicFeatureFlag'
}
export type FeatureFlagKey = 'IS_UNIQUE_INDEXES_ENABLED' | 'IS_JSON_FILTER_ENABLED' | 'IS_AI_ENABLED' | 'IS_COMMAND_MENU_ITEM_ENABLED' | 'IS_MARKETPLACE_SETTING_TAB_VISIBLE' | 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' | 'IS_PUBLIC_DOMAIN_ENABLED' | 'IS_EMAILING_DOMAIN_ENABLED' | 'IS_JUNCTION_RELATIONS_ENABLED' | 'IS_DRAFT_EMAIL_ENABLED' | 'IS_CONNECTED_ACCOUNT_MIGRATED' | 'IS_USAGE_ANALYTICS_ENABLED' | 'IS_RICH_TEXT_V1_MIGRATED' | 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' | 'IS_RECORD_TABLE_WIDGET_ENABLED' | 'IS_DATASOURCE_MIGRATED'
export type FeatureFlagKey = 'IS_UNIQUE_INDEXES_ENABLED' | 'IS_JSON_FILTER_ENABLED' | 'IS_AI_ENABLED' | 'IS_COMMAND_MENU_ITEM_ENABLED' | 'IS_MARKETPLACE_SETTING_TAB_VISIBLE' | 'IS_RECORD_PAGE_LAYOUT_EDITING_ENABLED' | 'IS_PUBLIC_DOMAIN_ENABLED' | 'IS_EMAILING_DOMAIN_ENABLED' | 'IS_JUNCTION_RELATIONS_ENABLED' | 'IS_DRAFT_EMAIL_ENABLED' | 'IS_CONNECTED_ACCOUNT_MIGRATED' | 'IS_RICH_TEXT_V1_MIGRATED' | 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' | 'IS_RECORD_TABLE_WIDGET_ENABLED' | 'IS_DATASOURCE_MIGRATED'
export interface ClientConfigMaintenanceMode {
startAt: Scalars['DateTime']
@@ -9321,7 +9321,6 @@ export const enumFeatureFlagKey = {
IS_JUNCTION_RELATIONS_ENABLED: 'IS_JUNCTION_RELATIONS_ENABLED' as const,
IS_DRAFT_EMAIL_ENABLED: 'IS_DRAFT_EMAIL_ENABLED' as const,
IS_CONNECTED_ACCOUNT_MIGRATED: 'IS_CONNECTED_ACCOUNT_MIGRATED' as const,
IS_USAGE_ANALYTICS_ENABLED: 'IS_USAGE_ANALYTICS_ENABLED' as const,
IS_RICH_TEXT_V1_MIGRATED: 'IS_RICH_TEXT_V1_MIGRATED' as const,
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED: 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED' as const,
IS_RECORD_TABLE_WIDGET_ENABLED: 'IS_RECORD_TABLE_WIDGET_ENABLED' as const,
+2 -1
View File
@@ -215,7 +215,8 @@ ENV PG_DATABASE_URL=postgres://twenty:twenty@localhost:5432/default \
DISABLE_DB_MIGRATIONS=true \
DISABLE_CRON_JOBS_REGISTRATION=true \
IS_BILLING_ENABLED=false \
SIGN_IN_PREFILLED=true
SIGN_IN_PREFILLED=true \
APPLICATION_LOG_DRIVER=CONSOLE
EXPOSE 2020
VOLUME ["/data/postgres", "/app/packages/twenty-server/.local-storage"]
@@ -70,6 +70,27 @@ export type AdminAiModels = {
models: Array<AdminAiModelConfig>;
};
export type AdminChatMessage = {
__typename?: 'AdminChatMessage';
createdAt: Scalars['DateTime'];
id: Scalars['UUID'];
parts: Array<AdminChatMessagePart>;
role: Scalars['String'];
};
export type AdminChatMessagePart = {
__typename?: 'AdminChatMessagePart';
textContent?: Maybe<Scalars['String']>;
toolName?: Maybe<Scalars['String']>;
type: Scalars['String'];
};
export type AdminChatThreadMessages = {
__typename?: 'AdminChatThreadMessages';
messages: Array<AdminChatMessage>;
thread: AdminWorkspaceChatThread;
};
export type AdminPanelHealthServiceData = {
__typename?: 'AdminPanelHealthServiceData';
description: Scalars['String'];
@@ -86,6 +107,25 @@ export enum AdminPanelHealthServiceStatus {
OUTAGE = 'OUTAGE'
}
export type AdminPanelRecentUser = {
__typename?: 'AdminPanelRecentUser';
createdAt: Scalars['DateTime'];
email: Scalars['String'];
firstName?: Maybe<Scalars['String']>;
id: Scalars['UUID'];
lastName?: Maybe<Scalars['String']>;
workspaceId?: Maybe<Scalars['UUID']>;
workspaceName?: Maybe<Scalars['String']>;
};
export type AdminPanelTopWorkspace = {
__typename?: 'AdminPanelTopWorkspace';
id: Scalars['UUID'];
name: Scalars['String'];
subdomain: Scalars['String'];
totalUsers: Scalars['Int'];
};
export type AdminPanelWorkerQueueHealth = {
__typename?: 'AdminPanelWorkerQueueHealth';
id: Scalars['String'];
@@ -93,6 +133,17 @@ export type AdminPanelWorkerQueueHealth = {
status: AdminPanelHealthServiceStatus;
};
export type AdminWorkspaceChatThread = {
__typename?: 'AdminWorkspaceChatThread';
conversationSize: Scalars['Int'];
createdAt: Scalars['DateTime'];
id: Scalars['UUID'];
title?: Maybe<Scalars['String']>;
totalInputTokens: Scalars['Int'];
totalOutputTokens: Scalars['Int'];
updatedAt: Scalars['DateTime'];
};
export type Agent = {
__typename?: 'Agent';
applicationId?: Maybe<Scalars['UUID']>;
@@ -1767,8 +1818,7 @@ export enum FeatureFlagKey {
IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED = 'IS_RECORD_PAGE_LAYOUT_GLOBAL_EDITION_ENABLED',
IS_RECORD_TABLE_WIDGET_ENABLED = 'IS_RECORD_TABLE_WIDGET_ENABLED',
IS_RICH_TEXT_V1_MIGRATED = 'IS_RICH_TEXT_V1_MIGRATED',
IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED',
IS_USAGE_ANALYTICS_ENABLED = 'IS_USAGE_ANALYTICS_ENABLED'
IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED'
}
export type Field = {
@@ -4315,6 +4365,8 @@ export type PublicWorkspaceData = {
export type Query = {
__typename?: 'Query';
adminPanelRecentUsers: Array<AdminPanelRecentUser>;
adminPanelTopWorkspaces: Array<AdminPanelTopWorkspace>;
agentTurns: Array<AgentTurn>;
apiKey?: Maybe<ApiKey>;
apiKeys: Array<ApiKey>;
@@ -4363,6 +4415,8 @@ export type Query = {
getAddressDetails: PlaceDetailsResult;
getAdminAiModels: AdminAiModels;
getAdminAiUsageByWorkspace: Array<UsageBreakdownItem>;
getAdminChatThreadMessages: AdminChatThreadMessages;
getAdminWorkspaceChatThreads: Array<AdminWorkspaceChatThread>;
getAiProviders: Scalars['JSON'];
getApprovedAccessDomains: Array<ApprovedAccessDomain>;
getAutoCompleteAddress: Array<AutocompleteResult>;
@@ -4428,6 +4482,17 @@ export type Query = {
versionInfo: VersionInfo;
webhook?: Maybe<Webhook>;
webhooks: Array<Webhook>;
workspaceLookupAdminPanel: UserLookup;
};
export type QueryAdminPanelRecentUsersArgs = {
searchTerm?: InputMaybe<Scalars['String']>;
};
export type QueryAdminPanelTopWorkspacesArgs = {
searchTerm?: InputMaybe<Scalars['String']>;
};
@@ -4593,6 +4658,17 @@ export type QueryGetAdminAiUsageByWorkspaceArgs = {
};
export type QueryGetAdminChatThreadMessagesArgs = {
threadId: Scalars['String'];
workspaceId: Scalars['String'];
};
export type QueryGetAdminWorkspaceChatThreadsArgs = {
workspaceId: Scalars['String'];
};
export type QueryGetAutoCompleteAddressArgs = {
address: Scalars['String'];
country?: InputMaybe<Scalars['String']>;
@@ -4828,6 +4904,11 @@ export type QueryWebhookArgs = {
id: Scalars['UUID'];
};
export type QueryWorkspaceLookupAdminPanelArgs = {
workspaceId: Scalars['String'];
};
export type QueueJob = {
__typename?: 'QueueJob';
attemptsMade: Scalars['Float'];
@@ -5851,6 +5932,7 @@ export type User = {
export type UserInfo = {
__typename?: 'UserInfo';
createdAt: Scalars['DateTime'];
email: Scalars['String'];
firstName?: Maybe<Scalars['String']>;
id: Scalars['UUID'];
@@ -6259,7 +6341,9 @@ export enum WorkspaceActivationStatus {
export type WorkspaceInfo = {
__typename?: 'WorkspaceInfo';
activationStatus: WorkspaceActivationStatus;
allowImpersonation: Scalars['Boolean'];
createdAt: Scalars['DateTime'];
featureFlags: Array<FeatureFlag>;
id: Scalars['UUID'];
logo?: Maybe<Scalars['String']>;
@@ -7382,13 +7466,49 @@ export type UserLookupAdminPanelMutationVariables = Exact<{
}>;
export type UserLookupAdminPanelMutation = { __typename?: 'Mutation', userLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, logo?: string | null, totalUsers: number, allowImpersonation: boolean, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
export type UserLookupAdminPanelMutation = { __typename?: 'Mutation', userLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, allowImpersonation: boolean, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
export type AdminPanelRecentUsersQueryVariables = Exact<{
searchTerm?: InputMaybe<Scalars['String']>;
}>;
export type AdminPanelRecentUsersQuery = { __typename?: 'Query', adminPanelRecentUsers: Array<{ __typename?: 'AdminPanelRecentUser', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string, workspaceName?: string | null, workspaceId?: string | null }> };
export type AdminPanelTopWorkspacesQueryVariables = Exact<{
searchTerm?: InputMaybe<Scalars['String']>;
}>;
export type AdminPanelTopWorkspacesQuery = { __typename?: 'Query', adminPanelTopWorkspaces: Array<{ __typename?: 'AdminPanelTopWorkspace', id: string, name: string, totalUsers: number, subdomain: string }> };
export type GetAdminChatThreadMessagesQueryVariables = Exact<{
workspaceId: Scalars['String'];
threadId: Scalars['String'];
}>;
export type GetAdminChatThreadMessagesQuery = { __typename?: 'Query', getAdminChatThreadMessages: { __typename?: 'AdminChatThreadMessages', thread: { __typename?: 'AdminWorkspaceChatThread', id: string, title?: string | null, totalInputTokens: number, totalOutputTokens: number, conversationSize: number, createdAt: string, updatedAt: string }, messages: Array<{ __typename?: 'AdminChatMessage', id: string, role: string, createdAt: string, parts: Array<{ __typename?: 'AdminChatMessagePart', type: string, textContent?: string | null, toolName?: string | null }> }> } };
export type GetAdminWorkspaceChatThreadsQueryVariables = Exact<{
workspaceId: Scalars['String'];
}>;
export type GetAdminWorkspaceChatThreadsQuery = { __typename?: 'Query', getAdminWorkspaceChatThreads: Array<{ __typename?: 'AdminWorkspaceChatThread', id: string, title?: string | null, totalInputTokens: number, totalOutputTokens: number, conversationSize: number, createdAt: string, updatedAt: string }> };
export type GetVersionInfoQueryVariables = Exact<{ [key: string]: never; }>;
export type GetVersionInfoQuery = { __typename?: 'Query', versionInfo: { __typename?: 'VersionInfo', currentVersion?: string | null, latestVersion: string } };
export type WorkspaceLookupAdminPanelQueryVariables = Exact<{
workspaceId: Scalars['String'];
}>;
export type WorkspaceLookupAdminPanelQuery = { __typename?: 'Query', workspaceLookupAdminPanel: { __typename?: 'UserLookup', user: { __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null, createdAt: string }, workspaces: Array<{ __typename?: 'WorkspaceInfo', id: string, name: string, allowImpersonation: boolean, logo?: string | null, totalUsers: number, activationStatus: WorkspaceActivationStatus, createdAt: string, workspaceUrls: { __typename?: 'WorkspaceUrls', customUrl?: string | null, subdomainUrl: string }, users: Array<{ __typename?: 'UserInfo', id: string, email: string, firstName?: string | null, lastName?: string | null }>, featureFlags: Array<{ __typename?: 'FeatureFlag', key: FeatureFlagKey, value: boolean }> }> } };
export type DeleteJobsMutationVariables = Exact<{
queueName: Scalars['String'];
jobIds: Array<Scalars['String']> | Scalars['String'];
@@ -8563,8 +8683,13 @@ export const UpdateDatabaseConfigVariableDocument = {"kind":"Document","definiti
export const GetConfigVariablesGroupedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetConfigVariablesGrouped"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getConfigVariablesGrouped"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"groups"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"isHiddenOnLoad"}},{"kind":"Field","name":{"kind":"Name","value":"variables"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"isSensitive"}},{"kind":"Field","name":{"kind":"Name","value":"isEnvOnly"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"source"}}]}}]}}]}}]}}]} as unknown as DocumentNode<GetConfigVariablesGroupedQuery, GetConfigVariablesGroupedQueryVariables>;
export const GetDatabaseConfigVariableDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetDatabaseConfigVariable"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getDatabaseConfigVariable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"isSensitive"}},{"kind":"Field","name":{"kind":"Name","value":"isEnvOnly"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"source"}}]}}]}}]} as unknown as DocumentNode<GetDatabaseConfigVariableQuery, GetDatabaseConfigVariableQueryVariables>;
export const UpdateWorkspaceFeatureFlagDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateWorkspaceFeatureFlag"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"featureFlag"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"value"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateWorkspaceFeatureFlag"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}},{"kind":"Argument","name":{"kind":"Name","value":"featureFlag"},"value":{"kind":"Variable","name":{"kind":"Name","value":"featureFlag"}}},{"kind":"Argument","name":{"kind":"Name","value":"value"},"value":{"kind":"Variable","name":{"kind":"Name","value":"value"}}}]}]}}]} as unknown as DocumentNode<UpdateWorkspaceFeatureFlagMutation, UpdateWorkspaceFeatureFlagMutationVariables>;
export const UserLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UserLookupAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userLookupAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"userIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}}]} as unknown as DocumentNode<UserLookupAdminPanelMutation, UserLookupAdminPanelMutationVariables>;
export const UserLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UserLookupAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userLookupAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"userIdentifier"},"value":{"kind":"Variable","name":{"kind":"Name","value":"userIdentifier"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"activationStatus"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}}]} as unknown as DocumentNode<UserLookupAdminPanelMutation, UserLookupAdminPanelMutationVariables>;
export const AdminPanelRecentUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdminPanelRecentUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminPanelRecentUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"searchTerm"},"value":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceName"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}}]}}]}}]} as unknown as DocumentNode<AdminPanelRecentUsersQuery, AdminPanelRecentUsersQueryVariables>;
export const AdminPanelTopWorkspacesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AdminPanelTopWorkspaces"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminPanelTopWorkspaces"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"searchTerm"},"value":{"kind":"Variable","name":{"kind":"Name","value":"searchTerm"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"subdomain"}}]}}]}}]} as unknown as DocumentNode<AdminPanelTopWorkspacesQuery, AdminPanelTopWorkspacesQueryVariables>;
export const GetAdminChatThreadMessagesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminChatThreadMessages"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"threadId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminChatThreadMessages"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}},{"kind":"Argument","name":{"kind":"Name","value":"threadId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"threadId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"thread"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"totalInputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"totalOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"conversationSize"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"messages"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"parts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"textContent"}},{"kind":"Field","name":{"kind":"Name","value":"toolName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode<GetAdminChatThreadMessagesQuery, GetAdminChatThreadMessagesQueryVariables>;
export const GetAdminWorkspaceChatThreadsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAdminWorkspaceChatThreads"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getAdminWorkspaceChatThreads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"totalInputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"totalOutputTokens"}},{"kind":"Field","name":{"kind":"Name","value":"conversationSize"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]} as unknown as DocumentNode<GetAdminWorkspaceChatThreadsQuery, GetAdminWorkspaceChatThreadsQueryVariables>;
export const GetVersionInfoDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetVersionInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"versionInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"currentVersion"}},{"kind":"Field","name":{"kind":"Name","value":"latestVersion"}}]}}]}}]} as unknown as DocumentNode<GetVersionInfoQuery, GetVersionInfoQueryVariables>;
export const WorkspaceLookupAdminPanelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"WorkspaceLookupAdminPanel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceLookupAdminPanel"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspaces"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"allowImpersonation"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"totalUsers"}},{"kind":"Field","name":{"kind":"Name","value":"activationStatus"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceUrls"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"customUrl"}},{"kind":"Field","name":{"kind":"Name","value":"subdomainUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"firstName"}},{"kind":"Field","name":{"kind":"Name","value":"lastName"}}]}},{"kind":"Field","name":{"kind":"Name","value":"featureFlags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}}]}}]}}]}}]}}]} as unknown as DocumentNode<WorkspaceLookupAdminPanelQuery, WorkspaceLookupAdminPanelQueryVariables>;
export const DeleteJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"jobIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deletedCount"}},{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobId"}},{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode<DeleteJobsMutation, DeleteJobsMutationVariables>;
export const RetryJobsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RetryJobs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"retryJobs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"queueName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"queueName"}}},{"kind":"Argument","name":{"kind":"Name","value":"jobIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"jobIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"retriedCount"}},{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"jobId"}},{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]}}]} as unknown as DocumentNode<RetryJobsMutation, RetryJobsMutationVariables>;
export const GetIndicatorHealthStatusDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetIndicatorHealthStatus"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"indicatorId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"HealthIndicatorId"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getIndicatorHealthStatus"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"indicatorId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"indicatorId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"errorMessage"}},{"kind":"Field","name":{"kind":"Name","value":"details"}},{"kind":"Field","name":{"kind":"Name","value":"queues"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"queueName"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>;
@@ -1392,6 +1392,7 @@ msgstr "Voorbereiding van KI-versoek"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Kredietgebruik"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Uiteensetting van kredietgebruik vir jou werkruimte."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Redigeer"
@@ -5613,6 +5621,11 @@ msgstr "Geniet 'n 30-dae gratis proeflopie"
msgid "Enter a JSON object"
msgstr "Voer 'n JSON-voorwerp in"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Geen snellers vir hierdie funksie gekonfigureer nie."
msgid "No usage data"
msgstr "Geen gebruiksdata nie"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Totale tyd"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Gebruik oor alle werkruimtes op hierdie bediener"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Gebruiksanalise"
@@ -15187,6 +15208,11 @@ msgstr "Gebruiksanalise"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "تحضير طلب الذكاء الاصطناعي"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "استخدام الاعتمادات"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "تفصيل استخدام الرصيد في مساحة عملك."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "تحرير"
@@ -5613,6 +5621,11 @@ msgstr "استمتع بفترة تجريبية مجانية لمدة 30 يومً
msgid "Enter a JSON object"
msgstr "أدخل كائن JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "لا توجد مشغّلات مُكوّنة لهذه الوظيفة."
msgid "No usage data"
msgstr "لا توجد بيانات استخدام"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "إجمالي الوقت"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "الاستخدام عبر جميع مساحات العمل على هذا
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "تحليلات الاستخدام"
@@ -15187,6 +15208,11 @@ msgstr "تحليلات الاستخدام"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Preparació de la sol·licitud d'IA"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Ús del crèdit"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Desglossament de l'ús de crèdits del teu espai de treball."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Edita"
@@ -5613,6 +5621,11 @@ msgstr "Gaudiu d'una prova gratuïta de 30 dies"
msgid "Enter a JSON object"
msgstr "Introdueix un objecte JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "No hi ha cap activador configurat per a aquesta funció."
msgid "No usage data"
msgstr "No hi ha dades d'ús"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Temps total"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Ús a tots els espais de treball d'aquest servidor"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Anàlisi d'ús"
@@ -15187,6 +15208,11 @@ msgstr "Anàlisi d'ús"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Příprava požadavku AI"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Využití kreditu"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Rozpis využití kreditů ve vašem pracovním prostoru."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Upravit"
@@ -5613,6 +5621,11 @@ msgstr "Využijte 30denní bezplatnou zkušební verzi"
msgid "Enter a JSON object"
msgstr "Zadejte objekt JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Žádné spouštěče nejsou nakonfigurované pro tuto funkci."
msgid "No usage data"
msgstr "Žádná data o využití"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Celkový čas"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Využití napříč všemi pracovními prostory na tomto serveru"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Analytika využití"
@@ -15187,6 +15208,11 @@ msgstr "Analytika využití"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Forberedelse af AI-anmodning"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Brug af kreditter"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Opdeling af kreditforbrug for dit arbejdsområde."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Rediger"
@@ -5613,6 +5621,11 @@ msgstr "Få en 30-dages gratis prøveperiode"
msgid "Enter a JSON object"
msgstr "Indtast et JSON-objekt"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Ingen udløsere konfigureret for denne funktion."
msgid "No usage data"
msgstr "Ingen brugsdata"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14545,6 +14564,7 @@ msgstr "Samlet tid"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15181,6 +15201,7 @@ msgstr "Brug på tværs af alle arbejdsområder på denne server"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Brugsanalyse"
@@ -15189,6 +15210,11 @@ msgstr "Brugsanalyse"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Vorbereitung der KI-Anfrage"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Guthabenverbrauch"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Aufschlüsselung des Guthabenverbrauchs für Ihren Arbeitsbereich."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Bearbeiten"
@@ -5613,6 +5621,11 @@ msgstr "Genießen Sie eine 30-tägige kostenlose Testphase"
msgid "Enter a JSON object"
msgstr "Geben Sie ein JSON-Objekt ein"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Keine Trigger für diese Funktion konfiguriert."
msgid "No usage data"
msgstr "Keine Verbrauchsdaten"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Gesamtzeit"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Nutzung über alle Arbeitsbereiche auf diesem Server hinweg"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Verbrauchsanalysen"
@@ -15187,6 +15208,11 @@ msgstr "Verbrauchsanalysen"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Προετοιμασία αιτήματος AI"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Χρήση Πιστώσεων"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Ανάλυση χρήσης πιστώσεων για τον χώρο εργασίας σας."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Επεξεργασία"
@@ -5613,6 +5621,11 @@ msgstr "Απολαύστε μια δωρεάν δοκιμή 30 ημερών"
msgid "Enter a JSON object"
msgstr "Εισάγετε ένα αντικείμενο JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Δεν έχουν ρυθμιστεί εναύσματα για αυτή
msgid "No usage data"
msgstr "Δεν υπάρχουν δεδομένα χρήσης"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14547,6 +14566,7 @@ msgstr "Συνολικός χρόνος"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15183,6 +15203,7 @@ msgstr "Χρήση σε όλους τους χώρους εργασίας σε
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Αναλύσεις χρήσης"
@@ -15191,6 +15212,11 @@ msgstr "Αναλύσεις χρήσης"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
+26
View File
@@ -1387,6 +1387,7 @@ msgstr "AI request prep"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr "AI Usage"
@@ -1405,6 +1406,11 @@ msgstr "AI usage analytics is available with an Enterprise key."
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr "AI usage analytics requires ClickHouse. Contact your administrator."
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr "AI usage analytics will appear here once you start using AI features."
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4010,6 +4016,7 @@ msgstr "Credit Usage"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Credit usage breakdown for your workspace."
@@ -5212,6 +5219,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Edit"
@@ -5608,6 +5616,11 @@ msgstr "Enjoy a 30-day free trial"
msgid "Enter a JSON object"
msgstr "Enter a JSON object"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr "Enter a new secret value"
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10136,6 +10149,12 @@ msgstr "No triggers configured for this function."
msgid "No usage data"
msgstr "No usage data"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr "No usage data yet"
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14540,6 +14559,7 @@ msgstr "Total time"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr "Track AI consumption across your workspace."
@@ -15176,6 +15196,7 @@ msgstr "Usage across all workspaces on this server"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Usage Analytics"
@@ -15184,6 +15205,11 @@ msgstr "Usage Analytics"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr "Usage analytics requires ClickHouse. Contact your administrator."
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr "Usage analytics will appear here once you start using credits."
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Preparación de la solicitud de IA"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Uso de Crédito"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Desglose del uso de créditos de tu espacio de trabajo."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Editar"
@@ -5613,6 +5621,11 @@ msgstr "Disfruta de una prueba gratuita de 30 días"
msgid "Enter a JSON object"
msgstr "Introduce un objeto JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "No hay desencadenadores configurados para esta función."
msgid "No usage data"
msgstr "Sin datos de uso"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14545,6 +14564,7 @@ msgstr "Tiempo total"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15181,6 +15201,7 @@ msgstr "Uso en todos los espacios de trabajo de este servidor"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Analíticas de uso"
@@ -15189,6 +15210,11 @@ msgstr "Analíticas de uso"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "AI-pyynnön valmistelu"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Krediittien käyttäminen"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Työtilasi krediittikulutuksen erittely."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Muokkaa"
@@ -5613,6 +5621,11 @@ msgstr "Nauti 30 päivän ilmaisesta kokeilusta"
msgid "Enter a JSON object"
msgstr "Anna JSON-objekti"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Tälle funktiolle ei ole määritetty laukaisimia."
msgid "No usage data"
msgstr "Ei käyttötietoja"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Aika yhteensä"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Käyttö kaikissa tämän palvelimen työtiloissa"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Käyttöanalytiikka"
@@ -15187,6 +15208,11 @@ msgstr "Käyttöanalytiikka"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Préparation de la requête IA"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Utilisation des crédits"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Répartition de l'utilisation des crédits dans votre espace de travail."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Éditer"
@@ -5613,6 +5621,11 @@ msgstr "Profitez d'un essai gratuit de 30 jours"
msgid "Enter a JSON object"
msgstr "Saisissez un objet JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Aucun déclencheur configuré pour cette fonction."
msgid "No usage data"
msgstr "Aucune donnée d'utilisation"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14545,6 +14564,7 @@ msgstr "Temps total"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15181,6 +15201,7 @@ msgstr ""
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Analyses d'utilisation"
@@ -15189,6 +15210,11 @@ msgstr "Analyses d'utilisation"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1392,6 +1392,7 @@ msgstr "הכנת בקשת AI"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "שימוש באשראי"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "פירוט שימוש בקרדיטים עבור סביבת העבודה שלך."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "ערוך"
@@ -5613,6 +5621,11 @@ msgstr "התחל תקופת ניסיון חינם ל-30 יום"
msgid "Enter a JSON object"
msgstr "הזן אובייקט JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "אין טריגרים מוגדרים עבור פונקציה זו."
msgid "No usage data"
msgstr "אין נתוני שימוש"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "זמן כולל"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "שימוש בכל מרחבי העבודה בשרת זה"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "ניתוח נתוני שימוש"
@@ -15187,6 +15208,11 @@ msgstr "ניתוח נתוני שימוש"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "MI-kérés előkészítése"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Kredit Felhasználás"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "A munkaterület kreditfelhasználásának bontása."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Szerkesztés"
@@ -5613,6 +5621,11 @@ msgstr "Élvezze a 30 napos ingyenes próbaidőszakot"
msgid "Enter a JSON object"
msgstr "Adjon meg egy JSON objektumot"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Nincsenek triggerek beállítva ehhez a függvényhez."
msgid "No usage data"
msgstr "Nincsenek használati adatok"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Összes idő"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Használat ezen a szerveren lévő összes munkaterületen"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Használati elemzés"
@@ -15187,6 +15208,11 @@ msgstr "Használati elemzés"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Preparazione della richiesta IA"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Utilizzo dei Crediti"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Dettaglio dell'utilizzo dei crediti per il tuo spazio di lavoro."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Modifica"
@@ -5613,6 +5621,11 @@ msgstr "Approfitta di una prova gratuita di 30 giorni"
msgid "Enter a JSON object"
msgstr "Inserisci un oggetto JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Nessun trigger configurato per questa funzione."
msgid "No usage data"
msgstr "Nessun dato di utilizzo"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14545,6 +14564,7 @@ msgstr "Tempo totale"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15181,6 +15201,7 @@ msgstr "Utilizzo in tutti gli spazi di lavoro su questo server"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Analisi dell'utilizzo"
@@ -15189,6 +15210,11 @@ msgstr "Analisi dell'utilizzo"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "AI リクエストの準備"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "クレジット使用量"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "ワークスペースのクレジット利用内訳。"
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "編集"
@@ -5613,6 +5621,11 @@ msgstr "30 日間の無料トライアルをご利用ください"
msgid "Enter a JSON object"
msgstr "JSON オブジェクトを入力"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "この関数にはトリガーが設定されていません。"
msgid "No usage data"
msgstr "利用データなし"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "合計時間"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "このサーバー上のすべてのワークスペースでの利用状
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "利用分析"
@@ -15187,6 +15208,11 @@ msgstr "利用分析"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "AI 요청 준비"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "크레딧 사용량"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "워크스페이스의 크레딧 사용량 세부 내역."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "편집"
@@ -5613,6 +5621,11 @@ msgstr "30일 무료 체험을 이용해 보세요"
msgid "Enter a JSON object"
msgstr "JSON 객체를 입력하세요"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "이 함수에 대해 구성된 트리거가 없습니다."
msgid "No usage data"
msgstr "사용량 데이터 없음"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "총 시간"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "이 서버의 모든 워크스페이스에서의 사용 현황"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "사용량 분석"
@@ -15187,6 +15208,11 @@ msgstr "사용량 분석"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Voorbereiding AI-verzoek"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Kredietgebruik"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Uitsplitsing van het kredietverbruik voor je werkruimte."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Bewerken"
@@ -5613,6 +5621,11 @@ msgstr "Profiteer van een gratis proefperiode van 30 dagen"
msgid "Enter a JSON object"
msgstr "Voer een JSON-object in"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Geen triggers geconfigureerd voor deze functie."
msgid "No usage data"
msgstr "Geen gebruiksgegevens"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14545,6 +14564,7 @@ msgstr "Totale tijd"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15181,6 +15201,7 @@ msgstr "Gebruik in alle werkruimten op deze server"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Gebruiksanalyse"
@@ -15189,6 +15210,11 @@ msgstr "Gebruiksanalyse"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Forberedelse av AI-forespørsel"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Kredittbruk"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Fordeling av kredittforbruk for arbeidsområdet ditt."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Rediger"
@@ -5613,6 +5621,11 @@ msgstr "Få en 30-dagers gratis prøveperiode"
msgid "Enter a JSON object"
msgstr "Skriv inn et JSON-objekt"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Ingen utløsere er konfigurert for denne funksjonen."
msgid "No usage data"
msgstr "Ingen bruksdata"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Total tid"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Bruk på tvers av alle arbeidsområder på denne serveren"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Bruksanalyse"
@@ -15187,6 +15208,11 @@ msgstr "Bruksanalyse"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Przygotowanie żądania AI"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Wykorzystanie kredytów"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Podział zużycia kredytów w Twojej przestrzeni roboczej."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Edytuj"
@@ -5613,6 +5621,11 @@ msgstr "Skorzystaj z 30-dniowego bezpłatnego okresu próbnego"
msgid "Enter a JSON object"
msgstr "Wprowadź obiekt JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Brak skonfigurowanych wyzwalaczy dla tej funkcji."
msgid "No usage data"
msgstr "Brak danych o użyciu"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Całkowity czas"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Użycie we wszystkich przestrzeniach roboczych na tym serwerze"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Analiza użycia"
@@ -15187,6 +15208,11 @@ msgstr "Analiza użycia"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1387,6 +1387,7 @@ msgstr ""
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1405,6 +1406,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4010,6 +4016,7 @@ msgstr ""
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr ""
@@ -5212,6 +5219,7 @@ msgstr ""
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr ""
@@ -5608,6 +5616,11 @@ msgstr ""
msgid "Enter a JSON object"
msgstr ""
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10136,6 +10149,12 @@ msgstr ""
msgid "No usage data"
msgstr ""
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14538,6 +14557,7 @@ msgstr ""
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15174,6 +15194,7 @@ msgstr ""
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr ""
@@ -15182,6 +15203,11 @@ msgstr ""
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Preparação da solicitação de IA"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Uso de Crédito"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Detalhamento do uso de créditos no seu espaço de trabalho."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Editar"
@@ -5613,6 +5621,11 @@ msgstr "Aproveite um teste gratuito de 30 dias"
msgid "Enter a JSON object"
msgstr "Insira um objeto JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Nenhum gatilho configurado para esta função."
msgid "No usage data"
msgstr "Nenhum dado de uso"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Tempo total"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Uso em todos os espaços de trabalho neste servidor"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Análises de uso"
@@ -15187,6 +15208,11 @@ msgstr "Análises de uso"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Preparação do pedido de IA"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Uso de Créditos"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Detalhe da utilização de créditos no seu espaço de trabalho."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Editar"
@@ -5613,6 +5621,11 @@ msgstr "Aproveite uma avaliação gratuita de 30 dias"
msgid "Enter a JSON object"
msgstr "Introduza um objeto JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Nenhum gatilho configurado para esta função."
msgid "No usage data"
msgstr "Sem dados de utilização"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Tempo total"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Utilização em todos os espaços de trabalho neste servidor"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Análises de Utilização"
@@ -15187,6 +15208,11 @@ msgstr "Análises de Utilização"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Pregătire cerere AI"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Utilizare credit"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Defalcarea utilizării creditelor pentru spațiul dvs. de lucru."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Editare"
@@ -5613,6 +5621,11 @@ msgstr "Bucurați-vă de o perioadă de probă gratuită de 30 de zile"
msgid "Enter a JSON object"
msgstr "Introduceți un obiect JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Nu există declanșatoare configurate pentru această funcție."
msgid "No usage data"
msgstr "Nu există date de utilizare"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Timp total"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Utilizare în toate spațiile de lucru de pe acest server"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Analize de utilizare"
@@ -15187,6 +15208,11 @@ msgstr "Analize de utilizare"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
Binary file not shown.
@@ -1392,6 +1392,7 @@ msgstr "Припрема AI захтева"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Кредитно коришћење"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Преглед коришћења кредита за ваш радни простор."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Уреди"
@@ -5613,6 +5621,11 @@ msgstr "Уживајте у 30-дневном бесплатном пробно
msgid "Enter a JSON object"
msgstr "Унесите JSON објекат"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Нема конфигурисаних окидача за ову фун
msgid "No usage data"
msgstr "Нема података о коришћењу"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Укупно време"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Употреба у свим радним просторима на ов
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Аналитика коришћења"
@@ -15187,6 +15208,11 @@ msgstr "Аналитика коришћења"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Förberedelse av AI-begäran"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Kreditanvändning"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Uppdelning av kreditförbrukning för din arbetsyta."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Redigera"
@@ -5613,6 +5621,11 @@ msgstr "Prova gratis i 30 dagar"
msgid "Enter a JSON object"
msgstr "Ange ett JSON-objekt"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10143,6 +10156,12 @@ msgstr "Inga utlösare konfigurerade för denna funktion."
msgid "No usage data"
msgstr "Inga användningsdata"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14551,6 +14570,7 @@ msgstr "Total tid"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15187,6 +15207,7 @@ msgstr "Användning i alla arbetsytor på denna server"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Användningsanalys"
@@ -15195,6 +15216,11 @@ msgstr "Användningsanalys"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Yapay zeka istek hazırlığı"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Kredi Kullanımı"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Çalışma alanınız için kredi kullanım dökümü."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Düzenle"
@@ -5613,6 +5621,11 @@ msgstr "30 günlük ücretsiz denemeden yararlanın"
msgid "Enter a JSON object"
msgstr "Bir JSON nesnesi girin"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Bu fonksiyon için yapılandırılmış tetikleyici yok."
msgid "No usage data"
msgstr "Kullanım verisi yok"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Toplam süre"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Bu sunucudaki tüm çalışma alanlarında kullanım"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Kullanım Analizi"
@@ -15187,6 +15208,11 @@ msgstr "Kullanım Analizi"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Підготовка запиту ШІ"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Використання кредитів"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Деталізація використання кредитів у вашому робочому просторі."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Редагувати"
@@ -5613,6 +5621,11 @@ msgstr "Скористайтеся 30-денним безкоштовним пр
msgid "Enter a JSON object"
msgstr "Введіть об’єкт JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Для цієї функції не налаштовано тригер
msgid "No usage data"
msgstr "Немає даних про використання"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14545,6 +14564,7 @@ msgstr "Загальний час"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15181,6 +15201,7 @@ msgstr "Використання в усіх робочих просторах
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Аналітика використання"
@@ -15189,6 +15210,11 @@ msgstr "Аналітика використання"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "Chuẩn bị yêu cầu AI"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "Sử dụng tín dụng"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "Phân tích chi tiết việc sử dụng tín dụng cho không gian làm việc của bạn."
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "Chỉnh sửa"
@@ -5613,6 +5621,11 @@ msgstr "Tận hưởng bản dùng thử miễn phí 30 ngày"
msgid "Enter a JSON object"
msgstr "Nhập một đối tượng JSON"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "Không có cấu hình trình kích hoạt cho hàm này."
msgid "No usage data"
msgstr "Không có dữ liệu sử dụng"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "Tổng thời gian"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "Mức sử dụng trên tất cả không gian làm việc trên máy ch
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "Phân tích sử dụng"
@@ -15187,6 +15208,11 @@ msgstr "Phân tích sử dụng"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "AI 请求准备"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "信用使用情况"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "工作区的积分使用明细。"
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "编辑"
@@ -5613,6 +5621,11 @@ msgstr "享受 30 天免费试用"
msgid "Enter a JSON object"
msgstr "输入 JSON 对象"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "此函数未配置触发器."
msgid "No usage data"
msgstr "无使用数据"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "总耗时"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "此服务器上所有工作区的使用情况"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "使用分析"
@@ -15187,6 +15208,11 @@ msgstr "使用分析"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -1392,6 +1392,7 @@ msgstr "AI 請求準備"
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI Usage"
msgstr ""
@@ -1410,6 +1411,11 @@ msgstr ""
msgid "AI usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: KgAAyO
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "AI usage analytics will appear here once you start using AI features."
msgstr ""
#. js-lingui-id: SknniY
#: src/pages/settings/ai/SettingsAIUsageUserDetail.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
@@ -4015,6 +4021,7 @@ msgstr "信用使用"
#. js-lingui-id: 6/q4+J
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Credit usage breakdown for your workspace."
msgstr "工作區的點數使用明細。"
@@ -5217,6 +5224,7 @@ msgstr "[email protected], @apple.com"
#: src/modules/object-record/record-group/hooks/useRecordGroupActions.ts
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/object-record/record-field/ui/form-types/components/FormMultiSelectFieldInput.tsx
#: src/modules/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions.ts
msgid "Edit"
msgstr "編輯"
@@ -5613,6 +5621,11 @@ msgstr "享有 30 天免費試用"
msgid "Enter a JSON object"
msgstr "輸入 JSON 物件"
#. js-lingui-id: peBb6B
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableValueInput.tsx
msgid "Enter a new secret value"
msgstr ""
#. js-lingui-id: u2fAme
#: src/modules/object-record/record-field/ui/form-types/components/FormNumberFieldInput.tsx
msgid "Enter a number"
@@ -10141,6 +10154,12 @@ msgstr "未為此函式設定任何觸發器。"
msgid "No usage data"
msgstr "沒有使用資料"
#. js-lingui-id: TayaS7
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "No usage data yet"
msgstr ""
#. js-lingui-id: wJwIUq
#: src/modules/object-record/record-field/ui/form-types/components/FormSelectFieldInput.tsx
msgid "No value"
@@ -14543,6 +14562,7 @@ msgstr "總時間"
#. js-lingui-id: BxecEJ
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
#: src/pages/settings/ai/components/SettingsAIUsageTab.tsx
msgid "Track AI consumption across your workspace."
msgstr ""
@@ -15179,6 +15199,7 @@ msgstr "此伺服器上所有工作區的使用情況"
#. js-lingui-id: 21hsGI
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage Analytics"
msgstr "使用分析"
@@ -15187,6 +15208,11 @@ msgstr "使用分析"
msgid "Usage analytics requires ClickHouse. Contact your administrator."
msgstr ""
#. js-lingui-id: XglEba
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
msgid "Usage analytics will appear here once you start using credits."
msgstr ""
#. js-lingui-id: 7vRxpC
#: src/pages/settings/SettingsUsageUserDetail.tsx
#: src/modules/settings/usage/components/SettingsUsageAnalyticsSection.tsx
@@ -4,12 +4,13 @@ import { isDefined } from 'twenty-shared/utils';
import { AIChatSuggestedPrompts } from '@/ai/components/suggested-prompts/AIChatSuggestedPrompts';
import { AGENT_CHAT_NEW_THREAD_DRAFT_KEY } from '@/ai/states/agentChatDraftsByThreadIdState';
import { agentChatErrorComponentFamilyState } from '@/ai/states/agentChatErrorComponentFamilyState';
import { agentChatHasMessageComponentSelector } from '@/ai/states/agentChatHasMessageComponentSelector';
import { agentChatMessagesLoadingState } from '@/ai/states/agentChatMessagesLoadingState';
import { agentChatThreadsLoadingState } from '@/ai/states/agentChatThreadsLoadingState';
import { agentChatErrorState } from '@/ai/states/agentChatErrorState';
import { agentChatHasMessageComponentSelector } from '@/ai/states/agentChatHasMessageComponentSelector';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { skipMessagesSkeletonUntilLoadedState } from '@/ai/states/skipMessagesSkeletonUntilLoadedState';
import { useAtomComponentFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateValue';
import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentSelectorValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
@@ -26,7 +27,11 @@ type AIChatEmptyStateProps = {
};
export const AIChatEmptyState = ({ editor }: AIChatEmptyStateProps) => {
const agentChatError = useAtomStateValue(agentChatErrorState);
const currentAIChatThread = useAtomStateValue(currentAIChatThreadState);
const agentChatError = useAtomComponentFamilyStateValue(
agentChatErrorComponentFamilyState,
{ threadId: currentAIChatThread },
);
const agentChatThreadsLoading = useAtomStateValue(
agentChatThreadsLoadingState,
);
@@ -36,7 +41,6 @@ export const AIChatEmptyState = ({ editor }: AIChatEmptyStateProps) => {
const skipMessagesSkeletonUntilLoaded = useAtomStateValue(
skipMessagesSkeletonUntilLoadedState,
);
const currentAIChatThread = useAtomStateValue(currentAIChatThreadState);
const hasMessages = useAtomComponentSelectorValue(
agentChatHasMessageComponentSelector,
@@ -1,10 +1,12 @@
import { AIChatErrorRenderer } from '@/ai/components/AIChatErrorRenderer';
import { AgentMessageRole } from '@/ai/constants/AgentMessageRole';
import { agentChatErrorState } from '@/ai/states/agentChatErrorState';
import { agentChatIsStreamingState } from '@/ai/states/agentChatIsStreamingState';
import { agentChatDisplayedThreadState } from '@/ai/states/agentChatDisplayedThreadState';
import { agentChatErrorComponentFamilyState } from '@/ai/states/agentChatErrorComponentFamilyState';
import { agentChatIsStreamingComponentFamilyState } from '@/ai/states/agentChatIsStreamingComponentFamilyState';
import { agentChatMessageComponentFamilySelector } from '@/ai/states/agentChatMessageComponentFamilySelector';
import { agentChatMessageIdsComponentSelector } from '@/ai/states/agentChatMessageIdsComponentSelector';
import { useAtomComponentFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilySelectorValue';
import { useAtomComponentFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateValue';
import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentSelectorValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { styled } from '@linaria/react';
@@ -15,8 +17,17 @@ const StyledErrorWrapper = styled.div`
`;
export const AIChatErrorUnderMessageList = () => {
const agentChatError = useAtomStateValue(agentChatErrorState);
const agentChatIsStreaming = useAtomStateValue(agentChatIsStreamingState);
const agentChatDisplayedThread = useAtomStateValue(
agentChatDisplayedThreadState,
);
const agentChatError = useAtomComponentFamilyStateValue(
agentChatErrorComponentFamilyState,
{ threadId: agentChatDisplayedThread },
);
const agentChatIsStreaming = useAtomComponentFamilyStateValue(
agentChatIsStreamingComponentFamilyState,
{ threadId: agentChatDisplayedThread },
);
const agentChatMessageIds = useAtomComponentSelectorValue(
agentChatMessageIdsComponentSelector,
@@ -1,7 +1,9 @@
import { AIChatMessage } from '@/ai/components/AIChatMessage';
import { agentChatErrorState } from '@/ai/states/agentChatErrorState';
import { agentChatIsStreamingState } from '@/ai/states/agentChatIsStreamingState';
import { agentChatDisplayedThreadState } from '@/ai/states/agentChatDisplayedThreadState';
import { agentChatErrorComponentFamilyState } from '@/ai/states/agentChatErrorComponentFamilyState';
import { agentChatIsStreamingComponentFamilyState } from '@/ai/states/agentChatIsStreamingComponentFamilyState';
import { agentChatLastMessageIdComponentSelector } from '@/ai/states/agentChatLastMessageIdComponentSelector';
import { useAtomComponentFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateValue';
import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentSelectorValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { isDefined } from 'twenty-shared/utils';
@@ -11,8 +13,17 @@ export const AIChatLastMessageWithStreamingState = () => {
agentChatLastMessageIdComponentSelector,
);
const agentChatIsStreaming = useAtomStateValue(agentChatIsStreamingState);
const agentChatError = useAtomStateValue(agentChatErrorState);
const agentChatDisplayedThread = useAtomStateValue(
agentChatDisplayedThreadState,
);
const agentChatIsStreaming = useAtomComponentFamilyStateValue(
agentChatIsStreamingComponentFamilyState,
{ threadId: agentChatDisplayedThread },
);
const agentChatError = useAtomComponentFamilyStateValue(
agentChatErrorComponentFamilyState,
{ threadId: agentChatDisplayedThread },
);
if (!isDefined(lastMessageId)) {
return null;
@@ -1,9 +1,11 @@
import { styled } from '@linaria/react';
import { AIChatErrorRenderer } from '@/ai/components/AIChatErrorRenderer';
import { agentChatErrorState } from '@/ai/states/agentChatErrorState';
import { agentChatErrorComponentFamilyState } from '@/ai/states/agentChatErrorComponentFamilyState';
import { agentChatHasMessageComponentSelector } from '@/ai/states/agentChatHasMessageComponentSelector';
import { agentChatIsLoadingState } from '@/ai/states/agentChatIsLoadingState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { useAtomComponentFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateValue';
import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentSelectorValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { isDefined } from 'twenty-shared/utils';
@@ -18,7 +20,11 @@ const StyledErrorContainer = styled.div`
export const AIChatStandaloneError = () => {
const agentChatIsLoading = useAtomStateValue(agentChatIsLoadingState);
const agentChatError = useAtomStateValue(agentChatErrorState);
const currentAIChatThread = useAtomStateValue(currentAIChatThreadState);
const agentChatError = useAtomComponentFamilyStateValue(
agentChatErrorComponentFamilyState,
{ threadId: currentAIChatThread },
);
const hasMessages = useAtomComponentSelectorValue(
agentChatHasMessageComponentSelector,
@@ -29,7 +29,7 @@ export const AIChatTab = () => {
const threadIdCreatedFromDraft = useAtomStateValue(
threadIdCreatedFromDraftState,
);
const draftKey = currentAIChatThread;
const draftKey = currentAIChatThread ?? AGENT_CHAT_NEW_THREAD_DRAFT_KEY;
const editorSectionKey =
draftKey !== AGENT_CHAT_NEW_THREAD_DRAFT_KEY &&
draftKey === threadIdCreatedFromDraft
@@ -4,9 +4,8 @@ import { type AgentChatSubscriptionEvent } from 'twenty-shared/ai';
import { isDefined } from 'twenty-shared/utils';
import { AGENT_CHAT_REFETCH_MESSAGES_EVENT_NAME } from '@/ai/constants/AgentChatRefetchMessagesEventName';
import { AGENT_CHAT_UNKNOWN_THREAD_ID } from '@/ai/constants/AgentChatUnknownThreadId';
import { agentChatFirstLiveSeqState } from '@/ai/states/agentChatFirstLiveSeqState';
import { agentChatHandleEventCallbackState } from '@/ai/states/agentChatHandleEventCallbackState';
import { agentChatFirstLiveSeqComponentFamilyState } from '@/ai/states/agentChatFirstLiveSeqComponentFamilyState';
import { agentChatHandleEventCallbackComponentFamilyState } from '@/ai/states/agentChatHandleEventCallbackComponentFamilyState';
import { AGENT_CHAT_NEW_THREAD_DRAFT_KEY } from '@/ai/states/agentChatDraftsByThreadIdState';
import { agentChatFetchedMessagesComponentFamilyState } from '@/ai/states/agentChatFetchedMessagesComponentFamilyState';
import { agentChatMessagesLoadingState } from '@/ai/states/agentChatMessagesLoadingState';
@@ -16,6 +15,7 @@ import { skipMessagesSkeletonUntilLoadedState } from '@/ai/states/skipMessagesSk
import { mapDBMessagesToUIMessages } from '@/ai/utils/mapDBMessagesToUIMessages';
import { useQueryWithCallbacks } from '@/apollo/hooks/useQueryWithCallbacks';
import { useListenToBrowserEvent } from '@/browser-event/hooks/useListenToBrowserEvent';
import { useAtomComponentFamilyStateCallbackState } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateCallbackState';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useSetAtomComponentFamilyState } from '@/ui/utilities/state/jotai/hooks/useSetAtomComponentFamilyState';
import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
@@ -30,8 +30,8 @@ export const AgentChatMessagesFetchEffect = () => {
const isNewThread = useMemo(
() =>
currentAIChatThread === AGENT_CHAT_NEW_THREAD_DRAFT_KEY ||
currentAIChatThread === AGENT_CHAT_UNKNOWN_THREAD_ID,
currentAIChatThread === null ||
currentAIChatThread === AGENT_CHAT_NEW_THREAD_DRAFT_KEY,
[currentAIChatThread],
);
@@ -53,6 +53,14 @@ export const AgentChatMessagesFetchEffect = () => {
{ threadId: currentAIChatThread },
);
const handleEventCallbackFamilyCallback =
useAtomComponentFamilyStateCallbackState(
agentChatHandleEventCallbackComponentFamilyState,
);
const firstLiveSeqFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatFirstLiveSeqComponentFamilyState,
);
const handleFirstLoad = useCallback(
(_data: GetChatMessagesQuery) => {
setSkipMessagesSkeletonUntilLoaded(false);
@@ -76,13 +84,23 @@ export const AgentChatMessagesFetchEffect = () => {
return;
}
const handleEvent = store.get(agentChatHandleEventCallbackState.atom);
const threadId = store.get(currentAIChatThreadState.atom);
if (!isDefined(threadId)) {
return;
}
const familyKey = { threadId };
const handleEvent = store.get(
handleEventCallbackFamilyCallback(familyKey),
);
if (!isDefined(handleEvent)) {
return;
}
const firstLiveSeq = store.get(agentChatFirstLiveSeqState.atom);
const firstLiveSeq = store.get(firstLiveSeqFamilyCallback(familyKey));
for (let index = 0; index < catchup.chunks.length; index++) {
const chunkSeq = index + 1;
@@ -98,7 +116,13 @@ export const AgentChatMessagesFetchEffect = () => {
} as AgentChatSubscriptionEvent);
}
},
[setAgentChatFetchedMessages, setAgentChatQueuedMessages, store],
[
setAgentChatFetchedMessages,
setAgentChatQueuedMessages,
store,
handleEventCallbackFamilyCallback,
firstLiveSeqFamilyCallback,
],
);
const handleLoadingChange = useCallback(
@@ -111,7 +135,7 @@ export const AgentChatMessagesFetchEffect = () => {
const { refetch: refetchAgentChatMessages } = useQueryWithCallbacks(
GetChatMessagesDocument,
{
variables: { threadId: currentAIChatThread },
variables: { threadId: currentAIChatThread ?? '' },
skip: !isDefined(currentAIChatThread) || isNewThread,
onFirstLoad: handleFirstLoad,
onDataLoaded: handleDataLoaded,
@@ -120,8 +144,12 @@ export const AgentChatMessagesFetchEffect = () => {
);
const handleRefetchMessages = useCallback(() => {
if (isNewThread) {
return;
}
refetchAgentChatMessages();
}, [refetchAgentChatMessages]);
}, [refetchAgentChatMessages, isNewThread]);
useListenToBrowserEvent({
eventName: AGENT_CHAT_REFETCH_MESSAGES_EVENT_NAME,
@@ -11,7 +11,7 @@ import { agentChatDisplayedThreadState } from '@/ai/states/agentChatDisplayedThr
import { agentChatFetchedMessagesComponentFamilyState } from '@/ai/states/agentChatFetchedMessagesComponentFamilyState';
import { agentChatIsInitialScrollPendingOnThreadChangeState } from '@/ai/states/agentChatIsInitialScrollPendingOnThreadChangeState';
import { agentChatIsLoadingState } from '@/ai/states/agentChatIsLoadingState';
import { agentChatIsStreamingState } from '@/ai/states/agentChatIsStreamingState';
import { agentChatIsStreamingComponentFamilyState } from '@/ai/states/agentChatIsStreamingComponentFamilyState';
import { agentChatMessagesComponentFamilyState } from '@/ai/states/agentChatMessagesComponentFamilyState';
import { agentChatMessagesLoadingState } from '@/ai/states/agentChatMessagesLoadingState';
import { agentChatThreadsLoadingState } from '@/ai/states/agentChatThreadsLoadingState';
@@ -57,7 +57,10 @@ export const AgentChatStreamSubscriptionEffect = () => {
{ threadId: currentAIChatThread },
);
const agentChatIsStreaming = useAtomStateValue(agentChatIsStreamingState);
const agentChatIsStreaming = useAtomComponentFamilyStateValue(
agentChatIsStreamingComponentFamilyState,
{ threadId: currentAIChatThread },
);
const agentChatDisplayedThread = useAtomStateValue(
agentChatDisplayedThreadState,
@@ -9,15 +9,16 @@ import {
import { agentChatInputState } from '@/ai/states/agentChatInputState';
import { agentChatThreadsLoadingState } from '@/ai/states/agentChatThreadsLoadingState';
import { agentChatThreadsSelector } from '@/ai/states/agentChatThreadsSelector';
import { agentChatUsageState } from '@/ai/states/agentChatUsageState';
import { agentChatUsageComponentFamilyState } from '@/ai/states/agentChatUsageComponentFamilyState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { currentAIChatThreadTitleState } from '@/ai/states/currentAIChatThreadTitleState';
import { currentAIChatThreadTitleComponentFamilyState } from '@/ai/states/currentAIChatThreadTitleComponentFamilyState';
import { hasInitializedAgentChatThreadsState } from '@/ai/states/hasInitializedAgentChatThreadsState';
import { hasTriggeredCreateForDraftState } from '@/ai/states/hasTriggeredCreateForDraftState';
import { useUpdateMetadataStoreDraft } from '@/metadata-store/hooks/useUpdateMetadataStoreDraft';
import { metadataStoreState } from '@/metadata-store/states/metadataStoreState';
import { type FlatAgentChatThread } from '@/metadata-store/types/FlatAgentChatThread';
import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFlag';
import { useAtomComponentFamilyStateCallbackState } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateCallbackState';
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
@@ -37,13 +38,15 @@ export const AgentChatThreadInitializationEffect = () => {
const currentAIChatThread = useAtomStateValue(currentAIChatThreadState);
const setCurrentAIChatThread = useSetAtomState(currentAIChatThreadState);
const setAgentChatInput = useSetAtomState(agentChatInputState);
const setAgentChatUsage = useSetAtomState(agentChatUsageState);
const setCurrentAIChatThreadTitle = useSetAtomState(
currentAIChatThreadTitleState,
);
const setAgentChatThreadsLoading = useSetAtomState(
agentChatThreadsLoadingState,
);
const threadTitleFamilyCallback = useAtomComponentFamilyStateCallbackState(
currentAIChatThreadTitleComponentFamilyState,
);
const agentChatUsageFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatUsageComponentFamilyState,
);
const store = useStore();
const agentChatThreads = useAtomStateValue(agentChatThreadsSelector);
const storeEntry = useAtomValue(
@@ -88,7 +91,10 @@ export const AgentChatThreadInitializationEffect = () => {
}, [storeEntry.status, hasAiSettingsPermission, setAgentChatThreadsLoading]);
useEffect(() => {
if (hasInitializedAgentChatThreads || isValidUuid(currentAIChatThread)) {
if (
hasInitializedAgentChatThreads ||
(currentAIChatThread !== null && isValidUuid(currentAIChatThread))
) {
return;
}
@@ -110,13 +116,20 @@ export const AgentChatThreadInitializationEffect = () => {
setCurrentAIChatThread(firstThread.id);
setAgentChatInput(draftForThread);
setCurrentAIChatThreadTitle(firstThread.title ?? null);
const firstThreadFamilyKey = { threadId: firstThread.id };
store.set(
threadTitleFamilyCallback(firstThreadFamilyKey),
firstThread.title ?? null,
);
const hasUsageData =
(firstThread.conversationSize ?? 0) > 0 &&
isDefined(firstThread.contextWindowTokens);
setAgentChatUsage(
store.set(
agentChatUsageFamilyCallback(firstThreadFamilyKey),
hasUsageData
? {
lastMessage: null,
@@ -137,8 +150,6 @@ export const AgentChatThreadInitializationEffect = () => {
AGENT_CHAT_NEW_THREAD_DRAFT_KEY
] ?? '',
);
setCurrentAIChatThreadTitle(null);
setAgentChatUsage(null);
}
}, [
agentChatThreads,
@@ -149,9 +160,9 @@ export const AgentChatThreadInitializationEffect = () => {
storeEntry.status,
setCurrentAIChatThread,
setAgentChatInput,
setCurrentAIChatThreadTitle,
setAgentChatUsage,
store,
threadTitleFamilyCallback,
agentChatUsageFamilyCallback,
]);
return null;
@@ -10,11 +10,13 @@ import { themeCssVariables } from 'twenty-ui/theme-constants';
import { ContextUsageProgressRing } from '@/ai/components/internal/ContextUsageProgressRing';
import { agentChatHasMessageComponentSelector } from '@/ai/states/agentChatHasMessageComponentSelector';
import {
agentChatUsageState,
agentChatUsageComponentFamilyState,
type AgentChatLastMessageUsage,
} from '@/ai/states/agentChatUsageState';
} from '@/ai/states/agentChatUsageComponentFamilyState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { SettingsBillingLabelValueItem } from '@/settings/billing/components/internal/SettingsBillingLabelValueItem';
import { billingState } from '@/client-config/states/billingState';
import { useAtomComponentFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateValue';
import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentSelectorValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { formatNumber } from '~/utils/format/formatNumber';
@@ -94,7 +96,11 @@ const getCachedLabel = (lastMessage: AgentChatLastMessageUsage): string => {
export const AIChatContextUsageButton = () => {
const { t } = useLingui();
const [isHovered, setIsHovered] = useState(false);
const agentChatUsage = useAtomStateValue(agentChatUsageState);
const currentAIChatThread = useAtomStateValue(currentAIChatThreadState);
const agentChatUsage = useAtomComponentFamilyStateValue(
agentChatUsageComponentFamilyState,
{ threadId: currentAIChatThread },
);
const billing = useAtomStateValue(billingState);
const isBillingEnabled = billing?.isBillingEnabled ?? false;
@@ -1,8 +1,10 @@
import { AGENT_CHAT_STOP_EVENT_NAME } from '@/ai/constants/AgentChatStopEventName';
import { agentChatInputIsEmptySelector } from '@/ai/states/agentChatInputIsEmptySelector';
import { agentChatIsLoadingState } from '@/ai/states/agentChatIsLoadingState';
import { agentChatIsStreamingState } from '@/ai/states/agentChatIsStreamingState';
import { agentChatIsStreamingComponentFamilyState } from '@/ai/states/agentChatIsStreamingComponentFamilyState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { dispatchBrowserEvent } from '@/browser-event/utils/dispatchBrowserEvent';
import { useAtomComponentFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { IconArrowUp, IconPlayerStop } from 'twenty-ui/display';
import { RoundedIconButton } from 'twenty-ui/input';
@@ -18,7 +20,11 @@ export const SendMessageButton = ({ onSend }: SendMessageButtonProps) => {
const agentChatIsLoading = useAtomStateValue(agentChatIsLoadingState);
const agentChatIsStreaming = useAtomStateValue(agentChatIsStreamingState);
const currentAIChatThread = useAtomStateValue(currentAIChatThreadState);
const agentChatIsStreaming = useAtomComponentFamilyStateValue(
agentChatIsStreamingComponentFamilyState,
{ threadId: currentAIChatThread },
);
const handleStopClick = () => {
dispatchBrowserEvent(AGENT_CHAT_STOP_EVENT_NAME);
@@ -1 +0,0 @@
export const AGENT_CHAT_UNKNOWN_THREAD_ID = 'unknown-thread';
@@ -49,7 +49,7 @@ export const useAIChatEditor = () => {
const { removeFocusItemFromFocusStackById } =
useRemoveFocusItemFromFocusStackById();
const draftKey = currentAIChatThread;
const draftKey = currentAIChatThread ?? AGENT_CHAT_NEW_THREAD_DRAFT_KEY;
const initialDraft = agentChatDraftsByThreadId[draftKey] ?? '';
const initialContent = textToTiptapContent(initialDraft);
@@ -1,10 +1,11 @@
import { agentChatDraftsByThreadIdState } from '@/ai/states/agentChatDraftsByThreadIdState';
import { agentChatInputState } from '@/ai/states/agentChatInputState';
import { agentChatUsageState } from '@/ai/states/agentChatUsageState';
import { agentChatUsageComponentFamilyState } from '@/ai/states/agentChatUsageComponentFamilyState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { currentAIChatThreadTitleState } from '@/ai/states/currentAIChatThreadTitleState';
import { currentAIChatThreadTitleComponentFamilyState } from '@/ai/states/currentAIChatThreadTitleComponentFamilyState';
import { threadIdCreatedFromDraftState } from '@/ai/states/threadIdCreatedFromDraftState';
import { useOpenAskAIPageInSidePanel } from '@/side-panel/hooks/useOpenAskAIPageInSidePanel';
import { useAtomComponentFamilyStateCallbackState } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateCallbackState';
import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState';
import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
import { useStore } from 'jotai';
@@ -26,25 +27,28 @@ export const useAIChatThreadClick = (
currentAIChatThreadState,
);
const setAgentChatInput = useSetAtomState(agentChatInputState);
const setCurrentAIChatThreadTitle = useSetAtomState(
currentAIChatThreadTitleState,
);
const setAgentChatUsage = useSetAtomState(agentChatUsageState);
const setAgentChatDraftsByThreadId = useSetAtomState(
agentChatDraftsByThreadIdState,
);
const threadTitleFamilyCallback = useAtomComponentFamilyStateCallbackState(
currentAIChatThreadTitleComponentFamilyState,
);
const agentChatUsageFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatUsageComponentFamilyState,
);
const store = useStore();
const { openAskAIPage } = useOpenAskAIPageInSidePanel();
const handleThreadClick = (thread: AgentChatThread) => {
setThreadIdCreatedFromDraft(null);
const previousDraftKey = currentAIChatThread;
const isSameThread = thread.id === currentAIChatThread;
setAgentChatDraftsByThreadId((prev) => ({
...prev,
[previousDraftKey]: store.get(agentChatInputState.atom),
}));
if (currentAIChatThread !== null) {
setAgentChatDraftsByThreadId((prev) => ({
...prev,
[currentAIChatThread]: store.get(agentChatInputState.atom),
}));
}
setCurrentAIChatThread(thread.id);
if (!isSameThread) {
@@ -53,12 +57,18 @@ export const useAIChatThreadClick = (
setAgentChatInput(newDraft);
}
setCurrentAIChatThreadTitle(thread.title ?? null);
const clickedFamilyKey = { threadId: thread.id };
store.set(
threadTitleFamilyCallback(clickedFamilyKey),
thread.title ?? null,
);
const hasUsageData =
(thread.conversationSize ?? 0) > 0 &&
isDefined(thread.contextWindowTokens);
setAgentChatUsage(
store.set(
agentChatUsageFamilyCallback(clickedFamilyKey),
hasUsageData
? {
lastMessage: null,
@@ -1,4 +1,4 @@
import { useCallback, useEffect } from 'react';
import { useEffect } from 'react';
import { readUIMessageStream, type UIMessageChunk } from 'ai';
import { print, type ExecutionResult } from 'graphql';
@@ -10,19 +10,17 @@ import {
import { isDefined } from 'twenty-shared/utils';
import { v4 } from 'uuid';
import { AGENT_CHAT_INSTANCE_ID } from '@/ai/constants/AgentChatInstanceId';
import { AGENT_CHAT_REFETCH_MESSAGES_EVENT_NAME } from '@/ai/constants/AgentChatRefetchMessagesEventName';
import { ON_AGENT_CHAT_EVENT } from '@/ai/graphql/subscriptions/OnAgentChatEvent';
import { agentChatErrorState } from '@/ai/states/agentChatErrorState';
import { agentChatFirstLiveSeqState } from '@/ai/states/agentChatFirstLiveSeqState';
import { agentChatHandleEventCallbackState } from '@/ai/states/agentChatHandleEventCallbackState';
import { agentChatIsStreamingState } from '@/ai/states/agentChatIsStreamingState';
import { agentChatErrorComponentFamilyState } from '@/ai/states/agentChatErrorComponentFamilyState';
import { agentChatFirstLiveSeqComponentFamilyState } from '@/ai/states/agentChatFirstLiveSeqComponentFamilyState';
import { agentChatHandleEventCallbackComponentFamilyState } from '@/ai/states/agentChatHandleEventCallbackComponentFamilyState';
import { agentChatIsStreamingComponentFamilyState } from '@/ai/states/agentChatIsStreamingComponentFamilyState';
import { agentChatMessagesComponentFamilyState } from '@/ai/states/agentChatMessagesComponentFamilyState';
import { agentChatStreamWriterState } from '@/ai/states/agentChatStreamWriterState';
import { agentChatSubscriptionDisposeState } from '@/ai/states/agentChatSubscriptionDisposeState';
import { agentChatUsageState } from '@/ai/states/agentChatUsageState';
import { currentAIChatThreadTitleState } from '@/ai/states/currentAIChatThreadTitleState';
import { agentChatUsageComponentFamilyState } from '@/ai/states/agentChatUsageComponentFamilyState';
import { currentAIChatThreadTitleComponentFamilyState } from '@/ai/states/currentAIChatThreadTitleComponentFamilyState';
import { dispatchBrowserEvent } from '@/browser-event/utils/dispatchBrowserEvent';
import { useAtomComponentFamilyStateCallbackState } from '@/ui/utilities/state/jotai/hooks/useAtomComponentFamilyStateCallbackState';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { sseClientState } from '@/sse-db-event/states/sseClientState';
@@ -98,58 +96,76 @@ export const useAgentChatSubscription = (threadId: string | null) => {
const store = useStore();
const sseClient = useAtomStateValue(sseClientState);
const cleanup = useCallback(() => {
const writer = store.get(agentChatStreamWriterState.atom);
if (isDefined(writer)) {
writer.close().catch(() => {});
store.set(agentChatStreamWriterState.atom, null);
}
const dispose = store.get(agentChatSubscriptionDisposeState.atom);
if (isDefined(dispose)) {
dispose();
store.set(agentChatSubscriptionDisposeState.atom, null);
}
if (store.get(agentChatIsStreamingState.atom)) {
store.set(agentChatIsStreamingState.atom, false);
}
}, [store]);
const errorFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatErrorComponentFamilyState,
);
const isStreamingFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatIsStreamingComponentFamilyState,
);
const firstLiveSeqFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatFirstLiveSeqComponentFamilyState,
);
const handleEventCallbackFamilyCallback =
useAtomComponentFamilyStateCallbackState(
agentChatHandleEventCallbackComponentFamilyState,
);
const messagesFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatMessagesComponentFamilyState,
);
const usageFamilyCallback = useAtomComponentFamilyStateCallbackState(
agentChatUsageComponentFamilyState,
);
const threadTitleFamilyCallback = useAtomComponentFamilyStateCallbackState(
currentAIChatThreadTitleComponentFamilyState,
);
useEffect(() => {
if (!isDefined(threadId)) {
cleanup();
if (!isDefined(threadId) || !isDefined(sseClient)) {
return;
}
if (!isDefined(sseClient)) {
return;
}
const familyKey = { threadId };
const errorAtom = errorFamilyCallback(familyKey);
const isStreamingAtom = isStreamingFamilyCallback(familyKey);
const firstLiveSeqAtom = firstLiveSeqFamilyCallback(familyKey);
const handleEventCallbackAtom =
handleEventCallbackFamilyCallback(familyKey);
const messagesAtom = messagesFamilyCallback(familyKey);
const usageAtom = usageFamilyCallback(familyKey);
const threadTitleAtom = threadTitleFamilyCallback(familyKey);
let bridge: TransformStream<UIMessageChunk> | null = null;
let throttleTimer: ReturnType<typeof setTimeout> | null = null;
let latestMessage: ExtendedUIMessage | null = null;
let writer: WritableStreamDefaultWriter<UIMessageChunk> | null = null;
let disposed = false;
store.set(agentChatFirstLiveSeqState.atom, null);
store.set(firstLiveSeqAtom, null);
const closeWriter = () => {
if (isDefined(writer)) {
writer.close().catch(() => {});
writer = null;
}
};
const cleanupStream = () => {
closeWriter();
if (store.get(isStreamingAtom)) {
store.set(isStreamingAtom, false);
}
};
const flushToAtom = () => {
const messageToFlush = latestMessage;
if (!isDefined(messageToFlush) || !isDefined(threadId)) {
if (!isDefined(messageToFlush)) {
return;
}
const atomKey = {
instanceId: AGENT_CHAT_INSTANCE_ID,
familyKey: { threadId },
};
const currentMessages = store.get(
agentChatMessagesComponentFamilyState.atomFamily(atomKey),
);
const currentMessages = store.get(messagesAtom);
const streamingMsgIndex = currentMessages.findIndex(
(message) => message.id === messageToFlush.id,
@@ -159,15 +175,9 @@ export const useAgentChatSubscription = (threadId: string | null) => {
const updatedMessages = [...currentMessages];
updatedMessages[streamingMsgIndex] = messageToFlush;
store.set(
agentChatMessagesComponentFamilyState.atomFamily(atomKey),
updatedMessages,
);
store.set(messagesAtom, updatedMessages);
} else {
store.set(agentChatMessagesComponentFamilyState.atomFamily(atomKey), [
...currentMessages,
messageToFlush,
]);
store.set(messagesAtom, [...currentMessages, messageToFlush]);
}
};
@@ -195,7 +205,7 @@ export const useAgentChatSubscription = (threadId: string | null) => {
);
if (isDefined(titlePart) && titlePart.type === 'data-thread-title') {
store.set(currentAIChatThreadTitleState.atom, titlePart.data.title);
store.set(threadTitleAtom, titlePart.data.title);
}
const metadata = extendedMessage.metadata as
@@ -218,7 +228,7 @@ export const useAgentChatSubscription = (threadId: string | null) => {
const usage = metadata.usage;
const model = metadata.model;
store.set(agentChatUsageState.atom, (prev) => ({
store.set(usageAtom, (prev) => ({
lastMessage: {
inputTokens: usage.inputTokens,
outputTokens: usage.outputTokens,
@@ -244,39 +254,36 @@ export const useAgentChatSubscription = (threadId: string | null) => {
}
flushToAtom();
store.set(agentChatIsStreamingState.atom, false);
if (!disposed) {
store.set(isStreamingAtom, false);
}
};
const handleEvent = (event: AgentChatSubscriptionEvent) => {
switch (event.type) {
case 'stream-chunk': {
if (
isDefined(event.seq) &&
store.get(agentChatFirstLiveSeqState.atom) === null
) {
store.set(agentChatFirstLiveSeqState.atom, event.seq);
if (isDefined(event.seq) && store.get(firstLiveSeqAtom) === null) {
store.set(firstLiveSeqAtom, event.seq);
}
if (!store.get(agentChatIsStreamingState.atom)) {
store.set(agentChatIsStreamingState.atom, true);
if (!store.get(isStreamingAtom)) {
store.set(isStreamingAtom, true);
store.set(errorAtom, null);
bridge = new TransformStream<UIMessageChunk>();
store.set(
agentChatStreamWriterState.atom,
bridge.writable.getWriter(),
);
writer = bridge.writable.getWriter();
const adaptedReadable = bridge.readable.pipeThrough(
createMidStreamAdapter(),
);
startReadLoop(adaptedReadable).catch(() => {
store.set(agentChatIsStreamingState.atom, false);
if (!disposed) {
store.set(isStreamingAtom, false);
}
});
}
const writer = store.get(agentChatStreamWriterState.atom);
if (isDefined(writer)) {
writer.write(event.chunk as UIMessageChunk).catch(() => {});
}
@@ -284,13 +291,7 @@ export const useAgentChatSubscription = (threadId: string | null) => {
}
case 'message-persisted': {
const writer = store.get(agentChatStreamWriterState.atom);
if (isDefined(writer)) {
writer.close().catch(() => {});
store.set(agentChatStreamWriterState.atom, null);
}
closeWriter();
dispatchBrowserEvent(AGENT_CHAT_REFETCH_MESSAGES_EVENT_NAME);
break;
}
@@ -306,22 +307,16 @@ export const useAgentChatSubscription = (threadId: string | null) => {
};
streamError.code = event.code;
store.set(agentChatErrorState.atom, streamError);
store.set(errorAtom, streamError);
const writer = store.get(agentChatStreamWriterState.atom);
if (isDefined(writer)) {
writer.close().catch(() => {});
store.set(agentChatStreamWriterState.atom, null);
}
store.set(agentChatIsStreamingState.atom, false);
closeWriter();
store.set(isStreamingAtom, false);
break;
}
}
};
store.set(agentChatHandleEventCallbackState.atom, () => handleEvent);
store.set(handleEventCallbackAtom, () => handleEvent);
const dispose = sseClient.subscribe<AgentChatEventPayload>(
{
@@ -340,19 +335,32 @@ export const useAgentChatSubscription = (threadId: string | null) => {
// graphql-sse handles reconnection automatically
},
complete: () => {
cleanup();
if (!disposed) {
cleanupStream();
}
},
},
);
store.set(agentChatSubscriptionDisposeState.atom, () => dispose);
return () => {
store.set(agentChatHandleEventCallbackState.atom, null);
disposed = true;
store.set(handleEventCallbackAtom, null);
if (isDefined(throttleTimer)) {
clearTimeout(throttleTimer);
}
cleanup();
cleanupStream();
dispose();
};
}, [threadId, sseClient, store, cleanup]);
}, [
threadId,
sseClient,
store,
errorFamilyCallback,
isStreamingFamilyCallback,
firstLiveSeqFamilyCallback,
handleEventCallbackFamilyCallback,
messagesFamilyCallback,
usageFamilyCallback,
threadTitleFamilyCallback,
]);
};
@@ -5,9 +5,7 @@ import {
agentChatDraftsByThreadIdState,
} from '@/ai/states/agentChatDraftsByThreadIdState';
import { agentChatInputState } from '@/ai/states/agentChatInputState';
import { agentChatUsageState } from '@/ai/states/agentChatUsageState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { currentAIChatThreadTitleState } from '@/ai/states/currentAIChatThreadTitleState';
import { shouldFocusChatEditorState } from '@/ai/states/shouldFocusChatEditorState';
import { hasTriggeredCreateForDraftState } from '@/ai/states/hasTriggeredCreateForDraftState';
import { isCreatingChatThreadState } from '@/ai/states/isCreatingChatThreadState';
@@ -24,10 +22,6 @@ import { CreateChatThreadDocument } from '~/generated-metadata/graphql';
export const useCreateAgentChatThread = () => {
const setCurrentAIChatThread = useSetAtomState(currentAIChatThreadState);
const setAgentChatInput = useSetAtomState(agentChatInputState);
const setAgentChatUsage = useSetAtomState(agentChatUsageState);
const setCurrentAIChatThreadTitle = useSetAtomState(
currentAIChatThreadTitleState,
);
const setIsCreatingChatThread = useSetAtomState(isCreatingChatThreadState);
const setAgentChatDraftsByThreadId = useSetAtomState(
agentChatDraftsByThreadIdState,
@@ -87,8 +81,6 @@ export const useCreateAgentChatThread = () => {
setCurrentAIChatThread(newThreadId);
setAgentChatInput(newDraft);
setCurrentAIChatThreadTitle(null);
setAgentChatUsage(null);
},
onError: () => {
setIsCreatingChatThread(false);
@@ -20,7 +20,10 @@ export const useEnsureAgentChatThreadIdForSend = (
> => {
const currentThreadId = store.get(currentAIChatThreadState.atom);
if (currentThreadId !== AGENT_CHAT_NEW_THREAD_DRAFT_KEY) {
if (
currentThreadId !== null &&
currentThreadId !== AGENT_CHAT_NEW_THREAD_DRAFT_KEY
) {
return currentThreadId;
}
@@ -5,9 +5,7 @@ import {
agentChatDraftsByThreadIdState,
} from '@/ai/states/agentChatDraftsByThreadIdState';
import { agentChatInputState } from '@/ai/states/agentChatInputState';
import { agentChatUsageState } from '@/ai/states/agentChatUsageState';
import { currentAIChatThreadState } from '@/ai/states/currentAIChatThreadState';
import { currentAIChatThreadTitleState } from '@/ai/states/currentAIChatThreadTitleState';
import { shouldFocusChatEditorState } from '@/ai/states/shouldFocusChatEditorState';
import { hasTriggeredCreateForDraftState } from '@/ai/states/hasTriggeredCreateForDraftState';
import { threadIdCreatedFromDraftState } from '@/ai/states/threadIdCreatedFromDraftState';
@@ -23,10 +21,6 @@ export const useSwitchToNewAIChat = () => {
currentAIChatThreadState,
);
const setAgentChatInput = useSetAtomState(agentChatInputState);
const setAgentChatUsage = useSetAtomState(agentChatUsageState);
const setCurrentAIChatThreadTitle = useSetAtomState(
currentAIChatThreadTitleState,
);
const setAgentChatDraftsByThreadId = useSetAtomState(
agentChatDraftsByThreadIdState,
);
@@ -35,20 +29,19 @@ export const useSwitchToNewAIChat = () => {
const switchToNewChat = () => {
setThreadIdCreatedFromDraft(null);
const previousDraftKey = currentAIChatThread;
const newChatDraft =
store.get(agentChatDraftsByThreadIdState.atom)[
AGENT_CHAT_NEW_THREAD_DRAFT_KEY
] ?? '';
setAgentChatDraftsByThreadId((prev) => ({
...prev,
[previousDraftKey]: store.get(agentChatInputState.atom),
}));
if (currentAIChatThread !== null) {
setAgentChatDraftsByThreadId((prev) => ({
...prev,
[currentAIChatThread]: store.get(agentChatInputState.atom),
}));
}
store.set(hasTriggeredCreateForDraftState.atom, false);
setCurrentAIChatThread(AGENT_CHAT_NEW_THREAD_DRAFT_KEY);
setAgentChatInput(newChatDraft);
setCurrentAIChatThreadTitle(null);
setAgentChatUsage(null);
openAskAIPage();
store.set(shouldFocusChatEditorState.atom, true);
};
@@ -1,6 +1,6 @@
import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState';
export const agentChatDisplayedThreadState = createAtomState<string>({
export const agentChatDisplayedThreadState = createAtomState<string | null>({
key: 'ai/agentChatDisplayedThreadState',
defaultValue: '',
defaultValue: null,
});
@@ -0,0 +1,9 @@
import { AgentChatComponentInstanceContext } from '@/ai/states/AgentChatComponentInstanceContext';
import { createAtomComponentFamilyState } from '@/ui/utilities/state/jotai/utils/createAtomComponentFamilyState';
export const agentChatErrorComponentFamilyState =
createAtomComponentFamilyState<Error | null, { threadId: string | null }>({
key: 'agentChatErrorComponentFamilyState',
defaultValue: null,
componentInstanceContext: AgentChatComponentInstanceContext,
});
@@ -1,6 +0,0 @@
import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState';
export const agentChatErrorState = createAtomState<Error | undefined | null>({
key: 'agentChatErrorState',
defaultValue: null,
});
@@ -3,7 +3,10 @@ import { createAtomComponentFamilyState } from '@/ui/utilities/state/jotai/utils
import { type ExtendedUIMessage } from 'twenty-shared/ai';
export const agentChatFetchedMessagesComponentFamilyState =
createAtomComponentFamilyState<ExtendedUIMessage[], { threadId: string }>({
createAtomComponentFamilyState<
ExtendedUIMessage[],
{ threadId: string | null }
>({
key: 'agentChatFetchedMessagesComponentFamilyState',
defaultValue: [],
componentInstanceContext: AgentChatComponentInstanceContext,

Some files were not shown because too many files have changed in this diff Show More