@datalayer/agent-runtimes 1.3.83 → 1.3.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/lib/chat/base/ChatBase.js +16 -0
  2. package/lib/chat/base/loopElement.d.ts +53 -0
  3. package/lib/chat/base/loopElement.js +78 -0
  4. package/lib/chat/base/loopWindow.d.ts +31 -0
  5. package/lib/chat/base/loopWindow.js +74 -0
  6. package/lib/components/a2ui/datalayer/FileUpload.d.ts +10 -2
  7. package/lib/components/a2ui/datalayer/FileUpload.js +10 -7
  8. package/lib/components/a2ui/datalayer/Form.d.ts +2 -0
  9. package/lib/components/a2ui/datalayer/Form.js +9 -2
  10. package/lib/components/a2ui/datalayer/formWidgets.d.ts +19 -0
  11. package/lib/components/a2ui/datalayer/formWidgets.js +51 -0
  12. package/lib/loop/apps/AppComposer.d.ts +39 -4
  13. package/lib/loop/apps/AppComposer.js +191 -19
  14. package/lib/loop/apps/AppRenderer.d.ts +20 -3
  15. package/lib/loop/apps/AppRenderer.js +58 -27
  16. package/lib/loop/apps/appspec.d.ts +2 -0
  17. package/lib/loop/apps/appspec.js +190 -11
  18. package/lib/loop/apps/checks.d.ts +6 -0
  19. package/lib/loop/apps/checks.js +170 -1
  20. package/lib/loop/apps/composer.d.ts +21 -10
  21. package/lib/loop/apps/composer.js +41 -8
  22. package/lib/loop/apps/language.d.ts +68 -0
  23. package/lib/loop/apps/language.js +275 -0
  24. package/lib/loop/apps/settingsInputs.d.ts +29 -0
  25. package/lib/loop/apps/settingsInputs.js +147 -0
  26. package/lib/loop/apps/uploads.d.ts +43 -0
  27. package/lib/loop/apps/uploads.js +66 -0
  28. package/lib/loop/core/index.d.ts +14 -1
  29. package/lib/loop/embed/AppEmbed.d.ts +14 -0
  30. package/lib/loop/embed/AppEmbed.js +64 -2
  31. package/lib/loop/embed/element.js +23 -0
  32. package/lib/loop/embed/embedSession.d.ts +14 -0
  33. package/lib/loop/embed/embedSession.js +34 -0
  34. package/lib/loop/embed/hostBridge.d.ts +22 -1
  35. package/lib/loop/plugins/app-elements/AppElements.d.ts +27 -0
  36. package/lib/loop/plugins/app-elements/AppElements.js +76 -0
  37. package/lib/loop/plugins/app-elements/index.d.ts +20 -0
  38. package/lib/loop/plugins/app-elements/index.js +43 -0
  39. package/lib/loop/plugins/app-page/appPageModel.js +2 -0
  40. package/lib/loop/plugins/chat/ChatView.js +10 -2
  41. package/lib/protocols/BrowserAgentAdapter.d.ts +8 -6
  42. package/lib/protocols/BrowserAgentAdapter.js +13 -10
  43. package/lib/runtimes/browser/protocol.d.ts +1 -1
  44. package/lib/specs/apps.js +149 -0
  45. package/lib/specs/appspecSchema.js +439 -2
  46. package/lib/specs/uiPlugins.js +6 -1
  47. package/lib/types/agentspecs.d.ts +130 -1
  48. package/package.json +1 -1
  49. package/scripts/codegen/generate_apps.py +16 -0
@@ -141,26 +141,29 @@ export class BrowserAgentAdapter extends BaseProtocolAdapter {
141
141
  return createBrowserModel({ ...inference, model: requested || model });
142
142
  }
143
143
  /**
144
- * What the modes a run is sent in tell it, and the model it runs on (LOOP
145
- * P-19) — the runtime's session API applies the same, for that run only.
144
+ * What the modes a run is sent in, and the profile its conversation is
145
+ * with, tell it, and the model it runs on (LOOP P-19, P-20) — the
146
+ * runtime's session API applies the same, for that run only.
146
147
  *
147
- * Refused, in a sentence, rather than run without them: modes sent to an
148
- * agent that has none, modes that are not the application's, and a mode
149
- * naming a model for an agent whose model is the host's own.
148
+ * Refused, in a sentence, rather than run without them: modes or a profile
149
+ * sent to an agent that has none, modes or a profile that are not the
150
+ * application's, and a model chosen for an agent whose model is the host's
151
+ * own.
150
152
  */
151
153
  runModes(forwardedProps) {
152
154
  const loop = forwardedProps?.loop;
153
- const chosen = loop?.modes;
154
- if (!chosen || Object.keys(chosen).length === 0) {
155
+ const chosen = loop?.modes ?? {};
156
+ const profile = loop?.profile || undefined;
157
+ if (Object.keys(chosen).length === 0 && !profile) {
155
158
  return undefined;
156
159
  }
157
160
  const { modeEffect, languageModel } = this.browserConfig;
158
161
  if (!modeEffect) {
159
- throw new Error('This agent has no modes: the options chosen in the composer cannot be applied to it.');
162
+ throw new Error('This agent has no modes or profiles: what was chosen in the composer cannot be applied to it.');
160
163
  }
161
- const effect = modeEffect(chosen);
164
+ const effect = modeEffect(chosen, profile);
162
165
  if (effect.model && languageModel) {
163
- throw new Error(`The mode chosen runs on ${effect.model}, and this agent's model is its host's own: it cannot run on another.`);
166
+ throw new Error(`The mode or profile chosen runs on ${effect.model}, and this agent's model is its host's own: it cannot run on another.`);
164
167
  }
165
168
  return effect;
166
169
  }
@@ -39,7 +39,7 @@ export type BrowserProtocolOptions = {
39
39
  /** Told what a delegated run does, as it does it — see `subagentTools`. */
40
40
  onSubagentEvent?: (event: AgentStreamSubagentPayload) => void;
41
41
  /** What the modes a run is sent in tell it (LOOP P-19); none when unsaid. */
42
- modeEffect?: (chosen: Record<string, string>) => AppModeEffect;
42
+ modeEffect?: (chosen: Record<string, string>, profile?: string) => AppModeEffect;
43
43
  };
44
44
  /**
45
45
  * The protocol config for an agent whose loop runs in this page.
package/lib/specs/apps.js CHANGED
@@ -16,6 +16,7 @@ export const ACCOUNTING_APP_0_0_1 = {
16
16
  model: '',
17
17
  skills: [],
18
18
  backendTools: [],
19
+ tools: [],
19
20
  context: [],
20
21
  contents: [],
21
22
  connections: [
@@ -66,6 +67,9 @@ export const ACCOUNTING_APP_0_0_1 = {
66
67
  ],
67
68
  commands: [],
68
69
  modes: [],
70
+ profiles: [],
71
+ language: 'en',
72
+ translations: {},
69
73
  components: [],
70
74
  assistant: 'wizard',
71
75
  voice: {
@@ -119,6 +123,7 @@ export const ACCOUNTING_APP_0_0_1 = {
119
123
  guards: [],
120
124
  gates: [],
121
125
  track: '',
126
+ code: [],
122
127
  },
123
128
  deployment: {
124
129
  hosted: {
@@ -156,6 +161,7 @@ export const CUSTOMER_INTERVIEW_APP_0_0_1 = {
156
161
  model: '',
157
162
  skills: [],
158
163
  backendTools: [],
164
+ tools: [],
159
165
  context: ['customer-research:0.0.1'],
160
166
  contents: [],
161
167
  connections: [],
@@ -190,6 +196,7 @@ export const CUSTOMER_INTERVIEW_APP_0_0_1 = {
190
196
  ],
191
197
  commands: [],
192
198
  modes: [],
199
+ profiles: [],
193
200
  settings: {
194
201
  type: 'object',
195
202
  properties: {
@@ -208,6 +215,8 @@ export const CUSTOMER_INTERVIEW_APP_0_0_1 = {
208
215
  },
209
216
  },
210
217
  },
218
+ language: 'en',
219
+ translations: {},
211
220
  components: [],
212
221
  assistant: 'cat',
213
222
  voice: {
@@ -263,6 +272,7 @@ export const CUSTOMER_INTERVIEW_APP_0_0_1 = {
263
272
  guards: [],
264
273
  gates: [],
265
274
  track: '',
275
+ code: [],
266
276
  },
267
277
  deployment: {
268
278
  hosted: {
@@ -297,6 +307,7 @@ export const DATA_QUALITY_APP_0_0_1 = {
297
307
  model: '',
298
308
  skills: [],
299
309
  backendTools: [],
310
+ tools: [],
300
311
  context: [],
301
312
  contents: ['The dataset under investigation'],
302
313
  connections: [],
@@ -316,6 +327,9 @@ export const DATA_QUALITY_APP_0_0_1 = {
316
327
  starters: [],
317
328
  commands: [],
318
329
  modes: [],
330
+ profiles: [],
331
+ language: 'en',
332
+ translations: {},
319
333
  components: [
320
334
  'Card',
321
335
  'Column',
@@ -361,6 +375,7 @@ export const DATA_QUALITY_APP_0_0_1 = {
361
375
  guards: [],
362
376
  gates: [],
363
377
  track: '',
378
+ code: [],
364
379
  },
365
380
  deployment: {
366
381
  hosted: {
@@ -446,6 +461,7 @@ export const DECIDE_APP_0_0_1 = {
446
461
  model: '',
447
462
  skills: [],
448
463
  backendTools: ['decide:0.0.1'],
464
+ tools: [],
449
465
  context: [],
450
466
  contents: [],
451
467
  connections: [],
@@ -484,6 +500,9 @@ export const DECIDE_APP_0_0_1 = {
484
500
  ],
485
501
  commands: [],
486
502
  modes: [],
503
+ profiles: [],
504
+ language: 'en',
505
+ translations: {},
487
506
  components: [],
488
507
  assistant: 'wizard',
489
508
  voice: {
@@ -531,6 +550,7 @@ export const DECIDE_APP_0_0_1 = {
531
550
  guards: [],
532
551
  gates: [],
533
552
  track: '',
553
+ code: [],
534
554
  },
535
555
  deployment: {
536
556
  hosted: {
@@ -565,6 +585,7 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
565
585
  model: '',
566
586
  skills: [],
567
587
  backendTools: [],
588
+ tools: [],
568
589
  context: [],
569
590
  contents: [],
570
591
  connections: [
@@ -639,6 +660,9 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
639
660
  ],
640
661
  commands: [],
641
662
  modes: [],
663
+ profiles: [],
664
+ language: 'en',
665
+ translations: {},
642
666
  components: [],
643
667
  voice: {
644
668
  enabled: false,
@@ -698,6 +722,7 @@ export const INBOX_TRIAGE_APP_0_0_1 = {
698
722
  guards: [],
699
723
  gates: [],
700
724
  track: '',
725
+ code: [],
701
726
  },
702
727
  deployment: {
703
728
  hosted: {
@@ -752,6 +777,7 @@ export const MODEL_CHOICE_APP_0_0_1 = {
752
777
  model: '',
753
778
  skills: [],
754
779
  backendTools: [],
780
+ tools: [],
755
781
  context: [],
756
782
  contents: [
757
783
  'The benchmark run: one configuration per model, its task results, cost and latency',
@@ -774,6 +800,9 @@ export const MODEL_CHOICE_APP_0_0_1 = {
774
800
  starters: [],
775
801
  commands: [],
776
802
  modes: [],
803
+ profiles: [],
804
+ language: 'en',
805
+ translations: {},
777
806
  components: [
778
807
  'Card',
779
808
  'Column',
@@ -822,6 +851,7 @@ export const MODEL_CHOICE_APP_0_0_1 = {
822
851
  guards: [],
823
852
  gates: [],
824
853
  track: '',
854
+ code: [],
825
855
  },
826
856
  deployment: {
827
857
  hosted: {
@@ -960,6 +990,7 @@ export const PIPELINE_REPORT_APP_0_0_1 = {
960
990
  model: '',
961
991
  skills: [],
962
992
  backendTools: [],
993
+ tools: [],
963
994
  context: ['datalayer:0.0.1'],
964
995
  contents: ['Sales pipeline export'],
965
996
  connections: [],
@@ -1004,6 +1035,9 @@ export const PIPELINE_REPORT_APP_0_0_1 = {
1004
1035
  ],
1005
1036
  commands: [],
1006
1037
  modes: [],
1038
+ profiles: [],
1039
+ language: 'en',
1040
+ translations: {},
1007
1041
  components: [
1008
1042
  'Card',
1009
1043
  'Column',
@@ -1202,6 +1236,7 @@ export const PIPELINE_REPORT_APP_0_0_1 = {
1202
1236
  'quality-drift-review:0.0.1',
1203
1237
  ],
1204
1238
  track: 'financial-reporting:0.0.1',
1239
+ code: [],
1205
1240
  },
1206
1241
  deployment: {
1207
1242
  hosted: {
@@ -1245,6 +1280,7 @@ export const QUOTE_CALCULATOR_APP_0_0_1 = {
1245
1280
  model: '',
1246
1281
  skills: [],
1247
1282
  backendTools: [],
1283
+ tools: [],
1248
1284
  context: [],
1249
1285
  contents: ['Price list'],
1250
1286
  connections: [],
@@ -1264,6 +1300,7 @@ export const QUOTE_CALCULATOR_APP_0_0_1 = {
1264
1300
  starters: [],
1265
1301
  commands: [],
1266
1302
  modes: [],
1303
+ profiles: [],
1267
1304
  settings: {
1268
1305
  type: 'object',
1269
1306
  properties: {
@@ -1288,6 +1325,8 @@ export const QUOTE_CALCULATOR_APP_0_0_1 = {
1288
1325
  },
1289
1326
  },
1290
1327
  },
1328
+ language: 'en',
1329
+ translations: {},
1291
1330
  components: [
1292
1331
  'Card',
1293
1332
  'Column',
@@ -1462,6 +1501,7 @@ export const QUOTE_CALCULATOR_APP_0_0_1 = {
1462
1501
  guards: [],
1463
1502
  gates: [],
1464
1503
  track: '',
1504
+ code: [],
1465
1505
  },
1466
1506
  deployment: {
1467
1507
  hosted: {
@@ -1500,6 +1540,7 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
1500
1540
  model: '',
1501
1541
  skills: [],
1502
1542
  backendTools: [],
1543
+ tools: [],
1503
1544
  context: [],
1504
1545
  contents: [],
1505
1546
  connections: [],
@@ -1525,6 +1566,7 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
1525
1566
  starters: [],
1526
1567
  commands: [],
1527
1568
  modes: [],
1569
+ profiles: [],
1528
1570
  settings: {
1529
1571
  type: 'object',
1530
1572
  properties: {
@@ -1541,6 +1583,8 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
1541
1583
  },
1542
1584
  },
1543
1585
  },
1586
+ language: 'en',
1587
+ translations: {},
1544
1588
  components: [
1545
1589
  'Card',
1546
1590
  'Column',
@@ -1709,6 +1753,7 @@ export const REPORT_FROM_A_FILE_APP_0_0_1 = {
1709
1753
  guards: [],
1710
1754
  gates: [],
1711
1755
  track: '',
1756
+ code: [],
1712
1757
  },
1713
1758
  deployment: {
1714
1759
  hosted: {
@@ -1747,6 +1792,7 @@ export const SALES_APP_0_0_1 = {
1747
1792
  model: '',
1748
1793
  skills: [],
1749
1794
  backendTools: [],
1795
+ tools: [],
1750
1796
  context: [],
1751
1797
  contents: [],
1752
1798
  connections: [],
@@ -1779,6 +1825,9 @@ export const SALES_APP_0_0_1 = {
1779
1825
  ],
1780
1826
  commands: [],
1781
1827
  modes: [],
1828
+ profiles: [],
1829
+ language: 'en',
1830
+ translations: {},
1782
1831
  components: [],
1783
1832
  assistant: 'paperclip',
1784
1833
  voice: {
@@ -1831,6 +1880,7 @@ export const SALES_APP_0_0_1 = {
1831
1880
  guards: [],
1832
1881
  gates: [],
1833
1882
  track: '',
1883
+ code: [],
1834
1884
  },
1835
1885
  deployment: {
1836
1886
  hosted: {
@@ -1867,6 +1917,7 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
1867
1917
  model: '',
1868
1918
  skills: [],
1869
1919
  backendTools: [],
1920
+ tools: [],
1870
1921
  context: [],
1871
1922
  contents: ['The benchmark run: task results, traces, cost and latency'],
1872
1923
  connections: [],
@@ -1886,6 +1937,9 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
1886
1937
  starters: [],
1887
1938
  commands: [],
1888
1939
  modes: [],
1940
+ profiles: [],
1941
+ language: 'en',
1942
+ translations: {},
1889
1943
  components: [
1890
1944
  'Card',
1891
1945
  'Column',
@@ -1932,6 +1986,7 @@ export const SHIP_OR_FIX_APP_0_0_1 = {
1932
1986
  guards: [],
1933
1987
  gates: [],
1934
1988
  track: '',
1989
+ code: [],
1935
1990
  },
1936
1991
  deployment: {
1937
1992
  hosted: {
@@ -2045,6 +2100,7 @@ export const SUPPLIER_COMPARISON_APP_0_0_1 = {
2045
2100
  model: '',
2046
2101
  skills: [],
2047
2102
  backendTools: [],
2103
+ tools: [],
2048
2104
  context: [],
2049
2105
  contents: ['Order history', 'Supplier price lists', 'Delivery records'],
2050
2106
  connections: [],
@@ -2064,6 +2120,9 @@ export const SUPPLIER_COMPARISON_APP_0_0_1 = {
2064
2120
  starters: [],
2065
2121
  commands: [],
2066
2122
  modes: [],
2123
+ profiles: [],
2124
+ language: 'en',
2125
+ translations: {},
2067
2126
  components: [
2068
2127
  'Card',
2069
2128
  'Column',
@@ -2112,6 +2171,7 @@ export const SUPPLIER_COMPARISON_APP_0_0_1 = {
2112
2171
  guards: [],
2113
2172
  gates: [],
2114
2173
  track: '',
2174
+ code: [],
2115
2175
  },
2116
2176
  deployment: {
2117
2177
  hosted: {
@@ -2210,6 +2270,7 @@ export const SUPPORT_DESK_APP_0_0_1 = {
2210
2270
  model: '',
2211
2271
  skills: [],
2212
2272
  backendTools: [],
2273
+ tools: [],
2213
2274
  context: [],
2214
2275
  contents: ['Product documentation', 'Returns policy'],
2215
2276
  connections: [],
@@ -2230,18 +2291,22 @@ export const SUPPORT_DESK_APP_0_0_1 = {
2230
2291
  {
2231
2292
  label: 'Reset my password',
2232
2293
  message: 'How do I reset my password?',
2294
+ category: 'Account',
2233
2295
  },
2234
2296
  {
2235
2297
  label: 'Returns',
2236
2298
  message: 'Can I return a product I bought six weeks ago?',
2299
+ category: 'Orders',
2237
2300
  },
2238
2301
  {
2239
2302
  label: 'Plans',
2240
2303
  message: 'What is the difference between the Team and the Business plan?',
2304
+ category: 'Account',
2241
2305
  },
2242
2306
  ],
2243
2307
  commands: [],
2244
2308
  modes: [],
2309
+ profiles: [],
2245
2310
  settings: {
2246
2311
  type: 'object',
2247
2312
  properties: {
@@ -2253,6 +2318,47 @@ export const SUPPORT_DESK_APP_0_0_1 = {
2253
2318
  },
2254
2319
  },
2255
2320
  },
2321
+ settingsUi: {
2322
+ product: {
2323
+ 'ui:widget': 'radio',
2324
+ },
2325
+ },
2326
+ language: 'en',
2327
+ translations: {
2328
+ fr: {
2329
+ name: 'Service client',
2330
+ description: '',
2331
+ welcome: 'Posez-moi vos questions sur le produit. Je réponds à partir de sa documentation et vous montre où ; quand elle ne le dit pas, je vous le dis.',
2332
+ starters: {
2333
+ 'Reset my password': {
2334
+ label: 'Réinitialiser mon mot de passe',
2335
+ message: 'Comment réinitialiser mon mot de passe ?',
2336
+ },
2337
+ Returns: {
2338
+ label: 'Retours',
2339
+ message: 'Puis-je retourner un produit acheté il y a six semaines ?',
2340
+ },
2341
+ Plans: {
2342
+ label: 'Offres',
2343
+ message: "Quelle est la différence entre l'offre Team et l'offre Business ?",
2344
+ },
2345
+ },
2346
+ categories: {
2347
+ Account: 'Compte',
2348
+ Orders: 'Commandes',
2349
+ },
2350
+ settings: {
2351
+ product: {
2352
+ title: 'Produit',
2353
+ description: '',
2354
+ options: {},
2355
+ },
2356
+ },
2357
+ commands: {},
2358
+ modes: {},
2359
+ profiles: {},
2360
+ },
2361
+ },
2256
2362
  components: [
2257
2363
  'Card',
2258
2364
  'Column',
@@ -2426,6 +2532,7 @@ export const SUPPORT_DESK_APP_0_0_1 = {
2426
2532
  guards: [],
2427
2533
  gates: [],
2428
2534
  track: '',
2535
+ code: [],
2429
2536
  },
2430
2537
  deployment: {
2431
2538
  hosted: {
@@ -2464,6 +2571,7 @@ export const WEB_RESEARCH_APP_0_0_1 = {
2464
2571
  model: '',
2465
2572
  skills: [],
2466
2573
  backendTools: [],
2574
+ tools: [],
2467
2575
  context: ['web-research:0.0.1'],
2468
2576
  contents: [],
2469
2577
  connections: [
@@ -2503,6 +2611,7 @@ export const WEB_RESEARCH_APP_0_0_1 = {
2503
2611
  ],
2504
2612
  commands: [],
2505
2613
  modes: [],
2614
+ profiles: [],
2506
2615
  settings: {
2507
2616
  type: 'object',
2508
2617
  properties: {
@@ -2514,6 +2623,8 @@ export const WEB_RESEARCH_APP_0_0_1 = {
2514
2623
  },
2515
2624
  },
2516
2625
  },
2626
+ language: 'en',
2627
+ translations: {},
2517
2628
  components: [],
2518
2629
  voice: {
2519
2630
  enabled: false,
@@ -2563,6 +2674,7 @@ export const WEB_RESEARCH_APP_0_0_1 = {
2563
2674
  guards: [],
2564
2675
  gates: [],
2565
2676
  track: '',
2677
+ code: [],
2566
2678
  },
2567
2679
  deployment: {
2568
2680
  hosted: {
@@ -4121,14 +4233,17 @@ export const APP_SOURCES = {
4121
4233
  {
4122
4234
  label: 'Reset my password',
4123
4235
  message: 'How do I reset my password?',
4236
+ category: 'Account',
4124
4237
  },
4125
4238
  {
4126
4239
  label: 'Returns',
4127
4240
  message: 'Can I return a product I bought six weeks ago?',
4241
+ category: 'Orders',
4128
4242
  },
4129
4243
  {
4130
4244
  label: 'Plans',
4131
4245
  message: 'What is the difference between the Team and the Business plan?',
4246
+ category: 'Account',
4132
4247
  },
4133
4248
  ],
4134
4249
  settings: {
@@ -4142,6 +4257,40 @@ export const APP_SOURCES = {
4142
4257
  },
4143
4258
  },
4144
4259
  },
4260
+ settings_ui: {
4261
+ product: {
4262
+ 'ui:widget': 'radio',
4263
+ },
4264
+ },
4265
+ translations: {
4266
+ fr: {
4267
+ name: 'Service client',
4268
+ welcome: 'Posez-moi vos questions sur le produit. Je réponds à partir de sa documentation et vous montre où ; quand elle ne le dit pas, je vous le dis.',
4269
+ starters: {
4270
+ 'Reset my password': {
4271
+ label: 'Réinitialiser mon mot de passe',
4272
+ message: 'Comment réinitialiser mon mot de passe ?',
4273
+ },
4274
+ Returns: {
4275
+ label: 'Retours',
4276
+ message: 'Puis-je retourner un produit acheté il y a six semaines ?',
4277
+ },
4278
+ Plans: {
4279
+ label: 'Offres',
4280
+ message: "Quelle est la différence entre l'offre Team et l'offre Business ?",
4281
+ },
4282
+ },
4283
+ categories: {
4284
+ Account: 'Compte',
4285
+ Orders: 'Commandes',
4286
+ },
4287
+ settings: {
4288
+ product: {
4289
+ title: 'Produit',
4290
+ },
4291
+ },
4292
+ },
4293
+ },
4145
4294
  components: [
4146
4295
  'Card',
4147
4296
  'Column',