Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
4e82168
Add parsed rule types
rushatgabhane Aug 27, 2026
6263083
Add parsed rule keys
rushatgabhane Aug 27, 2026
2b7dd9e
Add ParsePolicyRule command
rushatgabhane Aug 27, 2026
196417a
Add parsePolicyRule action
rushatgabhane Aug 27, 2026
770be42
Add rule prompt copy
rushatgabhane Aug 27, 2026
bdddafa
Add isPrefilled route param
rushatgabhane Aug 27, 2026
8b2fe30
Keep prefilled rule drafts
rushatgabhane Aug 27, 2026
135ef4b
Add rule prompt screen
rushatgabhane Aug 27, 2026
c740414
Open agent rule editor
rushatgabhane Aug 27, 2026
51b0b3e
Fix multiple rules example
rushatgabhane Aug 27, 2026
e26a9a8
Replace switches with guards
rushatgabhane Aug 27, 2026
526c93f
Fix knip and onyx buckets
rushatgabhane Aug 27, 2026
d5d162c
Only explain why
rushatgabhane Aug 27, 2026
c9c7e5d
Drop parsing state
rushatgabhane Aug 27, 2026
7a2d33b
Cap prompt length
rushatgabhane Aug 27, 2026
9d088fd
Rename GenerateRule
rushatgabhane Aug 28, 2026
13051d2
Merge branch 'main' into ai-rule-parser-pr
rushatgabhane Aug 31, 2026
978d69d
Match workspace category
rushatgabhane Sep 3, 2026
e02d093
Push generated rule
rushatgabhane Sep 3, 2026
aa1f2e2
Merge main
rushatgabhane Sep 10, 2026
0846550
Merge branch 'main' into ai-rule-parser-pr
rushatgabhane Sep 10, 2026
a7faedf
Fix Button import
rushatgabhane Sep 10, 2026
ab466b2
Disable review modal
rushatgabhane Sep 10, 2026
aba5c70
Revert "Disable review modal"
rushatgabhane Sep 10, 2026
64f5ed0
Fix expense defaults prefill
rushatgabhane Sep 10, 2026
9388ccd
Clear prompt draft
rushatgabhane Sep 10, 2026
03a4b79
Honor seeded spend draft
rushatgabhane Sep 10, 2026
baf3d11
Merge main into ai-rule-parser-pr and remove rulesRevamp beta gate
MelvinBot Sep 17, 2026
3ee7e1f
Fix lint errors surfaced by new react-hooks rules from main
MelvinBot Sep 17, 2026
d279541
Remove comments, eslint disables
rushatgabhane Sep 17, 2026
80ee295
Merge branch 'Expensify:main' into ai-rule-parser-pr
rushatgabhane Sep 18, 2026
86e18b8
Merge branch 'Expensify:main' into ai-rule-parser-pr
rushatgabhane Sep 22, 2026
195df06
Remove useCallback from RulesNewPage, hoist rule dispatch to module s…
MelvinBot Sep 22, 2026
667e050
Drop unknown spend rule categories from generated rules
MelvinBot Sep 22, 2026
fe45a0a
Make the agent rule page back button navigate back instead of switchi…
MelvinBot Sep 22, 2026
748b2cc
Merge branch 'Expensify:main' into ai-rule-parser-pr
rushatgabhane Sep 23, 2026
e45e23b
Merge branch 'main' into ai-rule-parser-pr
rushatgabhane Sep 23, 2026
89f6753
Merge branch 'ai-rule-parser-pr' of github.com:rushatgabhane/exfy int…
rushatgabhane Sep 23, 2026
5aac55e
Add generation timeout
rushatgabhane Sep 23, 2026
9c9bd59
Remove generation timeout
rushatgabhane Sep 23, 2026
3165738
Address review comments
rushatgabhane Sep 23, 2026
eae23aa
Use current prompt
rushatgabhane Sep 23, 2026
54e941f
Merge branch 'Expensify:main' into ai-rule-parser-pr
rushatgabhane Sep 24, 2026
e4dfee6
Merge branch 'main' into ai-rule-parser-pr
rushatgabhane Sep 24, 2026
0ba2ae4
Merge branch 'ai-rule-parser-pr' of github.com:rushatgabhane/exfy int…
rushatgabhane Sep 24, 2026
84d903f
Keep prefilled draft
rushatgabhane Sep 25, 2026
95a5432
Prompt back fixes
rushatgabhane Sep 25, 2026
481fd7a
Merge remote-tracking branch 'upstream/main' into ai-rule-parser-pr
rushatgabhane Sep 29, 2026
02603de
Drop unsupported area
rushatgabhane Sep 29, 2026
fa19a68
Merge remote-tracking branch 'upstream/main' into ai-rule-parser-pr
rushatgabhane Oct 2, 2026
7908cfe
Describe a rule from each rule page instead of a separate prompt page
rushatgabhane Oct 2, 2026
46a5c8e
Restore compiled GitHub action bundles to match main
rushatgabhane Oct 2, 2026
daf89b1
Drive the describe-rule flow through the prompt form's own loading an…
rushatgabhane Oct 2, 2026
1607232
Keep the failed generation state the GenerateRule job pushes to Onyx
rushatgabhane Oct 2, 2026
2f9ea79
Open the describe-rule input at full height
rushatgabhane Oct 2, 2026
55b2939
Drop the AI disclaimer from the describe-rule sheet
rushatgabhane Oct 2, 2026
8759dad
Use supporting text color for the describe-rule sheet copy
rushatgabhane Oct 2, 2026
89343ee
Show expense default preview as a text row with a small button beside…
rushatgabhane Oct 2, 2026
de31f18
Keep the describe-rule form loading until the generated rule arrives
rushatgabhane Oct 2, 2026
e13182a
Inset the expense default preview row to match the design
rushatgabhane Oct 2, 2026
8ea2342
Give the expense default preview row more vertical room
rushatgabhane Oct 2, 2026
b228a19
Move the apply-to-existing-expenses toggle into the expense default p…
rushatgabhane Oct 2, 2026
0a66d84
Remove explanatory comments from the expense default footer
rushatgabhane Oct 2, 2026
41af570
Only apply the generated rule that the open describe sheet asked for
rushatgabhane Oct 2, 2026
08b4d84
Track the pending generation in a ref and narrow the effect dependencies
rushatgabhane Oct 2, 2026
6a76f33
Make the describe rule input taller
MelvinBot Oct 7, 2026
f5dd8b6
Autofocus the describe rule input when the modal opens
MelvinBot Oct 7, 2026
ebf6f1a
Apply review cleanups to the describe rule feature
MelvinBot Oct 8, 2026
75993ba
Add a header comment to DescribeRuleModal
MelvinBot Oct 8, 2026
2cab570
Stop validating the describe rule input on blur so the required error…
MelvinBot Oct 8, 2026
9a645f4
Merge remote-tracking branch 'origin/main' into ai-rule-parser-pr
MelvinBot Oct 9, 2026
3152d89
Focus the describe rule input after the modal's open animation
MelvinBot Oct 9, 2026
efc3524
Run oxfmt on DescribeRuleModal
MelvinBot Oct 9, 2026
370162b
Merge branch 'Expensify:main' into ai-rule-parser-pr
rushatgabhane Oct 9, 2026
d94ba52
Extract the Describe button and modal into a shared DescribeRuleButton
MelvinBot Oct 9, 2026
c5f1844
Keep the Merchant editor's Describe modal open when the device rotates
MelvinBot Oct 9, 2026
f83b985
Merge remote-tracking branch 'origin/main' into ai-rule-parser-pr
MelvinBot Oct 9, 2026
11f2e9e
Keep a generated rule's category from carrying over the previous cate…
rushatgabhane Oct 9, 2026
4850253
Clear a leftover describe-rule loading state when the modal opens
rushatgabhane Oct 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,23 @@ const CONST = {
MAX_LENGTH: 83,
},

GENERATED_RULE: {
PROMPT_MAX_LENGTH: 6000,
STATE: {
RULE: 'rule',
UNSUPPORTED: 'unsupported',
MULTIPLE_RULES: 'multipleRules',
UNINTELLIGIBLE: 'unintelligible',
FAILED: 'failed',
},
RULE_TYPE: {
REQUIRE_FIELDS: 'requireFields',
FLAG_FOR_REVIEW: 'flagForReview',
RESTRICT_CARD_SPEND: 'restrictCardSpend',
EXPENSE_DEFAULTS: 'expenseDefaults',
},
},

EXPORT_DOWNLOAD: {
STATE: {
PREPARING: 'preparing',
Expand Down Expand Up @@ -10129,12 +10146,14 @@ const CONST = {
MERCHANT_RULE_ITEM: 'WorkspaceRules-MerchantRuleItem',
REQUIRE_FIELDS_RULE_ITEM: 'WorkspaceRules-RequireFieldsRuleItem',
REQUIRE_FIELDS_RULE_SAVE: 'WorkspaceRules-RequireFieldsRuleSave',
REQUIRE_FIELDS_RULE_DESCRIBE: 'WorkspaceRules-RequireFieldsRuleDescribe',
REQUIRE_FIELDS_RULE_DELETE: 'WorkspaceRules-RequireFieldsRuleDelete',
REQUIRE_FIELDS_RULE_CATEGORY: 'WorkspaceRules-RequireFieldsRuleCategory',
REQUIRE_FIELDS_RULE_FIELD_TOGGLE: 'WorkspaceRules-RequireFieldsRuleFieldToggle',
REQUIRE_FIELDS_RULE_DIRECTION_TOGGLE: 'WorkspaceRules-RequireFieldsRuleDirectionToggle',
FLAG_FOR_REVIEW_RULE_ITEM: 'WorkspaceRules-FlagForReviewRuleItem',
FLAG_FOR_REVIEW_RULE_SAVE: 'WorkspaceRules-FlagForReviewRuleSave',
FLAG_FOR_REVIEW_RULE_DESCRIBE: 'WorkspaceRules-FlagForReviewRuleDescribe',
FLAG_FOR_REVIEW_RULE_DELETE: 'WorkspaceRules-FlagForReviewRuleDelete',
FLAG_FOR_REVIEW_RULE_CATEGORY: 'WorkspaceRules-FlagForReviewRuleCategory',
FLAG_FOR_REVIEW_RULE_AMOUNT: 'WorkspaceRules-FlagForReviewRuleAmount',
Expand All @@ -10147,12 +10166,14 @@ const CONST = {
IMPORT_MERCHANT_RULES: 'WorkspaceRules-ImportMerchantRules',
MERCHANT_RULE_SECTION_ITEM: 'WorkspaceRules-MerchantRuleSectionItem',
MERCHANT_RULE_SAVE: 'WorkspaceRules-MerchantRuleSave',
MERCHANT_RULE_DESCRIBE: 'WorkspaceRules-MerchantRuleDescribe',
MERCHANT_RULE_PREVIEW_MATCHES: 'WorkspaceRules-MerchantRulePreviewMatches',
MERCHANT_RULE_DELETE: 'WorkspaceRules-MerchantRuleDelete',
CATEGORY_SELECTOR: 'WorkspaceRules-CategorySelector',
CURRENCY_SELECTOR: 'WorkspaceRules-CurrencySelector',
SPEND_RULE_SECTION_ITEM: 'WorkspaceRules-SpendRuleSectionItem',
SPEND_RULE_SAVE: 'WorkspaceRules-SpendRuleSave',
SPEND_RULE_DESCRIBE: 'WorkspaceRules-SpendRuleDescribe',
SPEND_RULE_DELETE: 'WorkspaceRules-SpendRuleDelete',
SPEND_RULE_RESTRICTION_TYPE: 'WorkspaceRules-SpendRuleRestrictionType',
AGENT_RULE_ITEM: 'WorkspaceRules-AgentRuleItem',
Expand Down
7 changes: 7 additions & 0 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,9 @@ const ONYXKEYS = {
/** Is loading agent rule suggestions for the add-rule Suggestions tab? */
IS_LOADING_AGENT_TEMPLATES: 'isLoadingAgentTemplates',

/** The rule generated from an admin's description */
GENERATED_RULE: 'generatedRule',

/** Set when we are loading fresh subscription/billing data from the server */
IS_LOADING_SUBSCRIPTION_DATA: 'isLoadingSubscriptionData',

Expand Down Expand Up @@ -1401,6 +1404,8 @@ const ONYXKEYS = {
EDIT_AGENT_PROMPT_FORM_DRAFT: 'editAgentPromptFormDraft',
ADD_AGENT_RULE_FORM: 'addAgentRuleForm',
ADD_AGENT_RULE_FORM_DRAFT: 'addAgentRuleFormDraft',
NEW_RULE_PROMPT_FORM: 'newRulePromptForm',
NEW_RULE_PROMPT_FORM_DRAFT: 'newRulePromptFormDraft',
EDIT_AGENT_RULE_FORM: 'editAgentRuleForm',
EDIT_AGENT_RULE_FORM_DRAFT: 'editAgentRuleFormDraft',
RILLET_CREDENTIALS_FORM: 'rilletCredentialsForm',
Expand Down Expand Up @@ -1565,6 +1570,7 @@ type OnyxFormValuesMapping = {
[ONYXKEYS.FORMS.EDIT_AGENT_NAME_FORM]: FormTypes.EditAgentNameForm;
[ONYXKEYS.FORMS.EDIT_AGENT_PROMPT_FORM]: FormTypes.EditAgentPromptForm;
[ONYXKEYS.FORMS.ADD_AGENT_RULE_FORM]: FormTypes.AddAgentRuleForm;
[ONYXKEYS.FORMS.NEW_RULE_PROMPT_FORM]: FormTypes.NewRulePromptForm;
[ONYXKEYS.FORMS.EDIT_AGENT_RULE_FORM]: FormTypes.EditAgentRuleForm;
[ONYXKEYS.FORMS.RILLET_CREDENTIALS_FORM]: FormTypes.RilletCredentialsForm;
[ONYXKEYS.FORMS.DUALENTRY_CREDENTIALS_FORM]: FormTypes.DualEntryCredentialsForm;
Expand Down Expand Up @@ -1814,6 +1820,7 @@ type OnyxValuesMapping = {
[ONYXKEYS.IS_LOADING_BULK_CHANGE_APPROVER_PAGE]: boolean;
[ONYXKEYS.IS_LOADING_POLICY_CODING_RULES_PREVIEW]: boolean;
[ONYXKEYS.IS_LOADING_AGENT_RULE_SUGGESTIONS]: boolean;
[ONYXKEYS.GENERATED_RULE]: OnyxTypes.GeneratedRule;
[ONYXKEYS.IS_LOADING_AGENT_TEMPLATES]: boolean;
[ONYXKEYS.IS_LOADING_REPORT_DATA]: boolean;
[ONYXKEYS.IS_SEARCH_FILTERS_CARD_DATA_LOADED]: boolean;
Expand Down
10 changes: 10 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8404,6 +8404,8 @@ Fordern Sie Spesendetails wie Belege und Beschreibungen an, legen Sie Limits und
applyUpdates: 'Diese Aktualisierungen anwenden:',
saveRule: 'Regel speichern',
previewMatches: 'Übereinstimmungen anzeigen',
previewMatchesDescription: 'Sieh dir an, wie diese Regel auf deine Ausgaben angewendet wird',
preview: 'Vorschau',
confirmError: 'Gib ein Händlerunternehmen ein und nimm mindestens eine Aktualisierung vor',
confirmErrorMerchant: 'Bitte Händler eingeben',
confirmErrorUpdate: 'Bitte wende mindestens ein Update an',
Expand Down Expand Up @@ -8740,6 +8742,14 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
requireFieldsDescription: 'Bestimmte Spesenfelder vorschreiben oder auf ihre Pflicht verzichten.',
createAgentRule: 'Agentenregel beschreiben',
createAgentRuleDescription: 'Erstellen Sie flexible Regeln, die ausgeführt werden, wenn Sie sie benötigen.',
describe: 'Beschreiben',
describeRule: 'Beschreibe deine Regel in einfachen Worten und Concierge erstellt sie für dich',
describeRuleInputLabel: 'Beschreibe die Regel',
promptErrors: {
unsupported: 'Diese Regel wird noch nicht unterstützt – wir arbeiten daran. Bitte versuche vorerst eine andere Regel.',
unintelligible: 'Formuliere deine Regel etwa so: Wenn Ausgaben über 100 $ liegen, ist ein Beleg erforderlich.',
multipleRules: 'Bitte eine Regel nach der anderen – beschreibe eine einzelne Regel, z. B.: Einzelhandelskäufe auf allen Karten blockieren.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Typ',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/el.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8764,6 +8764,8 @@ ${reportName}`,
applyUpdates: 'Εφαρμόστε αυτές τις ενημερώσεις:',
saveRule: 'Αποθήκευση κανόνα',
previewMatches: 'Προεπισκόπηση αντιστοιχιών',
previewMatchesDescription: 'Δείτε πώς εφαρμόζεται αυτός ο κανόνας στις δαπάνες σας',
preview: 'Προεπισκόπηση',
confirmError: 'Εισαγάγετε τον έμπορο και εφαρμόστε τουλάχιστον μία ενημέρωση',
confirmErrorMerchant: 'Παρακαλούμε εισαγάγετε τον έμπορο',
confirmErrorUpdate: 'Παρακαλούμε εφαρμόστε τουλάχιστον μία ενημέρωση',
Expand Down Expand Up @@ -8830,6 +8832,14 @@ ${reportName}`,
applyExpenseDefaultsDescription: 'Ενημέρωση πεδίων χωρίς να χρειάζεται ο υποβάλλων να κάνει τίποτα',
createAgentRule: 'Περιγράψτε τον κανόνα πράκτορα',
createAgentRuleDescription: 'Δημιουργήστε ευέλικτους κανόνες που εκτελούνται όταν τους χρειάζεστε.',
describe: 'Περιγραφή',
describeRule: 'Περιγράψτε τον κανόνα σας με απλά λόγια και ο Concierge θα τον δημιουργήσει για εσάς',
describeRuleInputLabel: 'Περιγράψτε τον κανόνα',
promptErrors: {
unsupported: 'Αυτός ο κανόνας δεν υποστηρίζεται ακόμη — το δουλεύουμε. Δοκιμάστε προς το παρόν έναν διαφορετικό κανόνα.',
unintelligible: 'Δοκιμάστε να διατυπώσετε τον κανόνα σας έτσι: αν οι δαπάνες ξεπερνούν τα 100 $, να απαιτείται απόδειξη.',
multipleRules: 'Έναν κανόνα τη φορά — δοκιμάστε να περιγράψετε έναν μόνο κανόνα, π.χ.: αποκλεισμός αγορών λιανικής σε όλες τις κάρτες.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Τύπος',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8954,6 +8954,8 @@ const translations = {
applyUpdates: 'Apply these updates:',
saveRule: 'Save rule',
previewMatches: 'Preview matches',
previewMatchesDescription: 'See how this rule applies to your expenses',
preview: 'Preview',
confirmError: 'Enter merchant and apply at least one update',
confirmErrorMerchant: 'Please enter merchant',
confirmErrorUpdate: 'Please apply at least one update',
Expand Down Expand Up @@ -9012,6 +9014,14 @@ const translations = {
applyExpenseDefaultsDescription: 'Update fields without submitter doing anything',
createAgentRule: 'Describe agent rule',
createAgentRuleDescription: 'Create flexible rules that run when you need.',
describe: 'Describe',
describeRule: 'Describe your rule in plain English and have Concierge build the rule for you',
describeRuleInputLabel: 'Describe the rule',
promptErrors: {
unsupported: "That rule isn't supported yet — we're working on it. Please try a different rule for now.",
unintelligible: 'Try phrasing your rule like: if expenses have a value over $100, then require a receipt.',
multipleRules: 'One rule at a time, please — try describing a single rule, like: block retail purchases on all cards.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Type',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8437,6 +8437,8 @@ ${reportName}`,
applyUpdates: 'Aplicar estas actualizaciones:',
saveRule: 'Guardar regla',
previewMatches: 'Vista previa de coincidencias',
previewMatchesDescription: 'Mira cómo se aplica esta regla a tus gastos',
preview: 'Vista previa',
confirmError: 'Ingresa comerciante y aplica al menos una actualización',
confirmErrorMerchant: 'Por favor ingresa comerciante',
confirmErrorUpdate: 'Por favor aplica al menos una actualización',
Expand Down Expand Up @@ -8746,6 +8748,14 @@ ${reportName}`,
requireFieldsDescription: 'Exige campos específicos de gasto o renuncia a exigirlos.',
createAgentRule: 'Describir regla de agente',
createAgentRuleDescription: 'Crea reglas flexibles que se ejecuten cuando las necesites.',
describe: 'Describir',
describeRule: 'Describe tu regla con tus propias palabras y Concierge la creará por ti',
describeRuleInputLabel: 'Describe la regla',
promptErrors: {
unsupported: 'Esa regla aún no es compatible: estamos trabajando en ello. Prueba con otra regla por ahora.',
unintelligible: 'Prueba a formular tu regla así: si los gastos superan los $100, exige un recibo.',
multipleRules: 'Una regla a la vez, por favor. Prueba a describir una sola regla, como: bloquear compras en comercios minoristas en todas las tarjetas.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Tipo',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8424,6 +8424,8 @@ Rendez obligatoires des informations de dépense comme les reçus et les descrip
applyUpdates: 'Appliquer ces mises à jour :',
saveRule: 'Enregistrer la règle',
previewMatches: 'Aperçu des correspondances',
previewMatchesDescription: 'Voyez comment cette règle s’applique à vos dépenses',
preview: 'Aperçu',
confirmError: 'Saisissez un commerçant et appliquez au moins une mise à jour',
confirmErrorMerchant: 'Veuillez saisir le commerçant',
confirmErrorUpdate: 'Veuillez appliquer au moins une mise à jour',
Expand Down Expand Up @@ -8761,6 +8763,14 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
requireFieldsDescription: 'Rendre certains champs de dépense obligatoires ou renoncer à les exiger.',
createAgentRule: 'Décrire la règle de l’agent',
createAgentRuleDescription: 'Créez des règles flexibles qui s’exécutent quand vous en avez besoin.',
describe: 'Décrire',
describeRule: 'Décrivez votre règle avec vos propres mots et Concierge la créera pour vous',
describeRuleInputLabel: 'Décrivez la règle',
promptErrors: {
unsupported: 'Cette règle n’est pas encore prise en charge — nous y travaillons. Essayez une autre règle pour le moment.',
unintelligible: 'Essayez de formuler votre règle ainsi : si les dépenses dépassent 100 $, exigez un reçu.',
multipleRules: 'Une règle à la fois, s’il vous plaît — essayez de décrire une seule règle, comme : bloquer les achats en magasin sur toutes les cartes.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Type',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8355,6 +8355,8 @@ Richiedi dettagli sulle spese come ricevute e descrizioni, imposta limiti e valo
applyUpdates: 'Applica questi aggiornamenti:',
saveRule: 'Salva regola',
previewMatches: 'Anteprima corrispondenze',
previewMatchesDescription: 'Guarda come questa regola si applica alle tue spese',
preview: 'Anteprima',
confirmError: 'Inserisci l’esercente e applica almeno un aggiornamento',
confirmErrorMerchant: 'Inserisci l’esercente',
confirmErrorUpdate: 'Applica almeno un aggiornamento',
Expand Down Expand Up @@ -8691,6 +8693,14 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
requireFieldsDescription: 'Richiedi campi specifici per le spese oppure rinuncia a renderli obbligatori.',
createAgentRule: 'Descrivi regola agente',
createAgentRuleDescription: 'Crea regole flessibili che vengono eseguite quando ne hai bisogno.',
describe: 'Descrivi',
describeRule: 'Descrivi la tua regola con parole semplici e Concierge la creerà per te',
describeRuleInputLabel: 'Descrivi la regola',
promptErrors: {
unsupported: 'Questa regola non è ancora supportata: ci stiamo lavorando. Per ora prova una regola diversa.',
unintelligible: 'Prova a formulare la regola così: se le spese superano i 100 $, richiedi una ricevuta.',
multipleRules: 'Una regola alla volta, per favore: prova a descrivere una singola regola, ad esempio bloccare gli acquisti al dettaglio su tutte le carte.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Tipo',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8250,6 +8250,8 @@ ${reportName}`,
applyUpdates: 'これらの更新を適用する',
saveRule: 'ルールを保存',
previewMatches: 'プレビュー候補を表示',
previewMatchesDescription: 'このルールが経費にどう適用されるかを確認',
preview: 'プレビュー',
confirmError: '店舗名を入力し、少なくとも1つの更新を適用してください',
confirmErrorMerchant: '加盟店を入力してください',
confirmErrorUpdate: '少なくとも 1 つの更新を適用してください',
Expand Down Expand Up @@ -8582,6 +8584,14 @@ ${reportName}`,
requireFieldsDescription: '特定の経費項目フィールドを必須にするか、必須条件を免除します。',
createAgentRule: 'エージェントルールの説明',
createAgentRuleDescription: '必要なときに実行される柔軟なルールを作成できます。',
describe: '説明する',
describeRule: 'ルールを自然な言葉で説明すると、Concierge がルールを作成します',
describeRuleInputLabel: 'ルールを説明',
promptErrors: {
unsupported: 'そのルールはまだ対応していません。現在対応を進めています。ほかのルールをお試しください。',
unintelligible: '「経費が100ドルを超える場合は領収書を必須にする」のように書いてみてください。',
multipleRules: '一度に1つのルールのみです。「すべてのカードで小売店での購入をブロックする」のように、1つのルールを説明してください。',
},
},
expenseDefaultsTable: {
tableColumnType: '種類',
Expand Down
10 changes: 10 additions & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8332,6 +8332,8 @@ Vereis onkostendetails zoals bonnen en beschrijvingen, stel limieten en standaar
applyUpdates: 'Pas deze updates toe:',
saveRule: 'Regel opslaan',
previewMatches: 'Voorbeelden van overeenkomsten bekijken',
previewMatchesDescription: 'Bekijk hoe deze regel op je uitgaven wordt toegepast',
preview: 'Voorbeeld',
confirmError: 'Voer handelaar in en pas minstens één wijziging toe',
confirmErrorMerchant: 'Voer handelaar in',
confirmErrorUpdate: 'Pas ten minste één wijziging toe',
Expand Down Expand Up @@ -8666,6 +8668,14 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
requireFieldsDescription: 'Specifieke onkostenvakken verplicht stellen of afzien van het verplicht stellen ervan.',
createAgentRule: 'Agentregel beschrijven',
createAgentRuleDescription: 'Maak flexibele regels die worden uitgevoerd wanneer jij dat nodig hebt.',
describe: 'Beschrijven',
describeRule: 'Beschrijf je regel in gewone taal en Concierge maakt de regel voor je',
describeRuleInputLabel: 'Beschrijf de regel',
promptErrors: {
unsupported: 'Die regel wordt nog niet ondersteund — we werken eraan. Probeer voorlopig een andere regel.',
unintelligible: 'Formuleer je regel bijvoorbeeld zo: als uitgaven hoger zijn dan $100, vraag dan een bon.',
multipleRules: 'Eén regel per keer graag — beschrijf één enkele regel, bijvoorbeeld: retailaankopen op alle kaarten blokkeren.',
},
},
expenseDefaultsTable: {
tableColumnType: 'Type',
Expand Down
Loading
Loading