tpmkms_4wp 9.2.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/common/animals.instance.json +21 -8
  2. package/common/colors.instance.json +32 -18
  3. package/common/comparable.instance.json +3 -0
  4. package/common/comparable.js +2 -2
  5. package/common/crew.instance.json +4736 -964
  6. package/common/crew.test.json +1904 -0
  7. package/common/dates.instance.json +28657 -0
  8. package/common/dates.js +152 -0
  9. package/common/dates.test.json +10239 -0
  10. package/common/dialogues.js +28 -9
  11. package/common/dimension.instance.json +3 -2
  12. package/common/edible.instance.json +1335 -508
  13. package/common/emotions.instance.json +7 -14
  14. package/common/emotions.js +4 -5
  15. package/common/fastfood.instance.json +4090 -698
  16. package/common/fastfood.js +7 -0
  17. package/common/formulas.instance.json +1 -0
  18. package/common/gdefaults.js +14 -0
  19. package/common/helpers/concept.js +1 -0
  20. package/common/helpers/dialogues.js +3 -0
  21. package/common/helpers/properties.js +2 -27
  22. package/common/helpers.js +70 -1
  23. package/common/hierarchy.js +4 -3
  24. package/common/kirk.instance.json +156 -10
  25. package/common/length.instance.json +17 -2
  26. package/common/math.instance.json +1 -0
  27. package/common/menus.instance.json +7 -0
  28. package/common/menus.js +1 -0
  29. package/common/menus.test.json +2418 -1355
  30. package/common/meta.js +3 -3
  31. package/common/ordering.instance.json +4 -2
  32. package/common/people.instance.json +8 -0
  33. package/common/pipboy.instance.json +57 -12
  34. package/common/pokemon.instance.json +24 -3
  35. package/common/pressure.instance.json +6 -2
  36. package/common/properties.instance.json +1 -0
  37. package/common/properties.js +19 -5
  38. package/common/punctuation.js +3 -0
  39. package/common/reports.instance.json +24 -14
  40. package/common/reports.js +2 -2
  41. package/common/spock.instance.json +156 -10
  42. package/common/temperature.instance.json +6 -2
  43. package/common/ui.instance.json +1 -0
  44. package/common/weight.instance.json +12 -0
  45. package/common/wp.instance.json +393 -95
  46. package/common/wp.js +15 -0
  47. package/main.js +2 -0
  48. package/package.json +6 -2
@@ -369,6 +369,7 @@ const template = {
369
369
  hierarchy: [
370
370
  ['meal', 'toAble'],
371
371
  ['drink', 'toAble'],
372
+ ['smoothie_modifier', 'sizeable'],
372
373
  ],
373
374
  bridges: [
374
375
  {
@@ -433,6 +434,12 @@ const template = {
433
434
  }
434
435
  },
435
436
  ],
437
+ associations: {
438
+ positive: [
439
+ { context: [['combo', 0], ['integer', 0]], choose: 0 },
440
+ { context: [['combo', 0], ['integer', 1]], choose: 0 },
441
+ ],
442
+ },
436
443
  },
437
444
  ],
438
445
  }
@@ -1203,6 +1203,7 @@
1203
1203
  }
1204
1204
  ],
1205
1205
  "learned_contextual_priorities": [],
1206
+ "rtf_associations": [],
1206
1207
  "query": "formulas are concepts",
1207
1208
  "key": {
1208
1209
  "query": "formulas are concepts"
@@ -4,6 +4,7 @@ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
4
4
  const tokenize = require('./tokenize.js')
5
5
  const gdefaults_tests = require('./gdefaults.test.json')
6
6
  const { getValue, isMany } = require('./helpers.js')
7
+ const helpers = require('./helpers')
7
8
 
8
9
  const config = {
9
10
  name: 'gdefaults',
@@ -29,6 +30,13 @@ const config = {
29
30
  apply: ({context, gp}) => gp(context.response),
30
31
  },
31
32
 
33
+ {
34
+ where: where(),
35
+ match: ({context}) => context.paraphrase && context.interpolate,
36
+ apply: async ({interpolate, context}) => {
37
+ return interpolate(context.interpolate, context)
38
+ }
39
+ },
32
40
  {
33
41
  where: where(),
34
42
  match: ({context}) => context.generate,
@@ -232,6 +240,12 @@ const initializer = ({config}) => {
232
240
  verbatim: (text) => {
233
241
  args.insert({ marker: 'verbatim', verbatim: text, isResponse: true })
234
242
  },
243
+ interpolate: async (interpolate, context) => {
244
+ const evaluator = async (key) => {
245
+ return args.gp(context[key])
246
+ }
247
+ return await helpers.processTemplateString(interpolate, evaluator)
248
+ }
235
249
  }
236
250
  })
237
251
  }
@@ -106,6 +106,7 @@ class API {
106
106
  level: 0,
107
107
  convolution: true,
108
108
  isA: [{ parent: 'adjective', instance: true }],
109
+ associator_return_type: [modifiersObjectId, 0],
109
110
  // isA: ['adjective'],
110
111
  before: ['verb'],
111
112
  bridge: `{ ...after[0], ${modifierProperties}, atomic: true, dead: true, marker: next(operator('${modifiersObjectId}')), value: '${modifiersObjectId}', modifiers: append([${modifierList}], after[0].modifiers)}`,
@@ -83,6 +83,9 @@ class API {
83
83
  return context.value
84
84
  }
85
85
  */
86
+ if (typeof context == 'string') {
87
+ context = { word: context, value: context }
88
+ }
86
89
  const { word, value, number } = context;
87
90
  if (!value) {
88
91
  return
@@ -548,8 +548,7 @@ class API {
548
548
 
549
549
  makeObject(args) {
550
550
  const types = [ 'hierarchyAble', 'object', 'property' ];
551
- const { config } = args;
552
- return this._km("dialogues").api.makeObject({ ...args, types });
551
+ return args.km("dialogues").api.makeObject({ ...args, types: (args.types || []).concat(types) });
553
552
  }
554
553
 
555
554
  relation_add (relations) {
@@ -704,6 +703,7 @@ class API {
704
703
  }
705
704
 
706
705
  setProperty(object, property, value, has, skipHandler) {
706
+ // debugger
707
707
  if (!skipHandler) {
708
708
  const handler = this.propertiesFH.getHandler([object, property])
709
709
  if (handler) {
@@ -794,31 +794,6 @@ class API {
794
794
 
795
795
  learnWords(config, context) {
796
796
  }
797
- /*
798
- ensureDefault(map, key, default) {
799
- if (!this._objects[map][key]) {
800
- this._objects[map][key] = default
801
- }
802
- return this._objects[map][key]
803
- }
804
-
805
- pushListNoDups(list, value) {
806
- if (list.includes(value)) {
807
- return
808
- }
809
- list.push(value)
810
- }
811
-
812
- ensureConcept(concept) {
813
- ensureDefault(this.properties, concept, {})
814
- ensureDefault(this.concepts, concept, [])
815
- }
816
-
817
- canDo(object, ability) {
818
- this.ensureConcept(object)
819
- this.pushListNoDups(this.ensureList('abilities', object), ability)
820
- }
821
- */
822
797
  isA(child, ancestor) {
823
798
  // return this._objects.parents[child].includes(parent);
824
799
  const todo = [child];
package/common/helpers.js CHANGED
@@ -151,11 +151,39 @@ const toEValue = (context) => {
151
151
  return context;
152
152
  }
153
153
 
154
+ const defaultContextCheckValidify = (properties) => {
155
+ for (const value of properties) {
156
+ if (typeof value == 'string') {
157
+ continue
158
+ }
159
+ if (typeof value.property == 'string' && value.filter) {
160
+ continue
161
+ }
162
+ throw new Error("Expected the <checks> argument to defaultContextCheck to be a list of <property> or { property: <property>, filter: <checks> }. Where <property> is a string.")
163
+ }
164
+ }
165
+
154
166
  const defaultContextCheckProperties = ['marker', 'text', 'verbatim', 'isResponse', { property: 'response', filter: ['marker', 'text', 'verbatim'] }]
167
+
168
+ const expand_checks = (properties) => {
169
+ const expanded = []
170
+ for (const property of properties) {
171
+ defaultContextCheckValidify(properties)
172
+ if (typeof property == 'string') {
173
+ expanded.push({ property, filter: defaultContextCheckProperties })
174
+ } else {
175
+ expanded.push({ property: property.property, filter: [...defaultContextCheckProperties, ...expand_checks(property.filter)] })
176
+ }
177
+ }
178
+ return expanded
179
+ }
180
+
155
181
  const defaultContextCheck = (properties = []) => {
182
+ defaultContextCheckValidify(properties)
156
183
  return [
157
184
  ...defaultContextCheckProperties,
158
- ...properties.map((property) => { return { property, filter: defaultContextCheckProperties } }),
185
+ // ...properties.map((property) => { return { property, filter: defaultContextCheckProperties } }),
186
+ ...expand_checks(properties),
159
187
  (object) => {
160
188
  if (typeof object.value == 'object') {
161
189
  return { property: 'value', filter: defaultContextCheckProperties }
@@ -220,7 +248,48 @@ const getValue = (propertyPath, object) => {
220
248
  return value
221
249
  }
222
250
 
251
+ const processTemplateString = async (template, evaluate) => {
252
+ async function resolveWithCallback(strings, ...keys) {
253
+ // const resolvedValues = await Promise.all(keys.map(key => lookupVariable(key)));
254
+ const resolvedValues = await Promise.all(keys.map(async (key) => {
255
+ return await evaluate(key)
256
+ }))
257
+
258
+ let result = strings[0];
259
+ for (let i = 0; i < resolvedValues.length; i++) {
260
+ result += resolvedValues[i] + strings[(i + 1)*2];
261
+ }
262
+ return result;
263
+ }
264
+
265
+ async function processTemplateString(template) {
266
+ // Split the template into strings and keys
267
+ const parts = template.split(/(\${[^}]+})/g);
268
+ const strings = [];
269
+ const keys = [];
270
+ for (const part of parts) {
271
+ if (part.startsWith("${") && part.endsWith("}")) {
272
+ keys.push(part.slice(2, -1)); // Extract key (e.g., "name" from "${name}")
273
+ strings.push(""); // Placeholder for interpolation
274
+ } else {
275
+ strings.push(part);
276
+ }
277
+ }
278
+
279
+ // Ensure the strings array has one more element than keys
280
+ if (strings.length === keys.length) {
281
+ strings.push("");
282
+ }
283
+
284
+ // Pass to the tagged template function
285
+ return resolveWithCallback(strings, ...keys);
286
+ }
287
+
288
+ return await processTemplateString(template)
289
+ }
290
+
223
291
  module.exports = {
292
+ processTemplateString,
224
293
  unshiftL,
225
294
  pushL,
226
295
  getValue,
@@ -246,14 +246,15 @@ const config = {
246
246
 
247
247
  return listable(context, 'hierarchyAble') && context.same && context.same.concept && !context.query
248
248
  },
249
- apply: ({callId, config, objects, km, context, asList, listable}) => {
249
+ apply: (args) => {
250
+ const {callId, config, objects, km, context, asList, listable} = args
250
251
  const api = km('properties').api
251
252
  const oneConcepts = asList(context);
252
253
  const twoConcepts = asList(context.same);
253
254
  for (const oneConcept of oneConcepts.value) {
254
255
  for (const twoConcept of twoConcepts.value) {
255
- oneConceptId = api.makeObject({config, context: oneConcept})
256
- twoConceptId = api.makeObject({config, context: twoConcept})
256
+ oneConceptId = api.makeObject({...args, context: oneConcept})
257
+ twoConceptId = api.makeObject({...args, context: twoConcept})
257
258
  api.rememberIsA(oneConceptId, twoConceptId)
258
259
  context.sameWasProcessed = true
259
260
  }
@@ -400,6 +400,11 @@
400
400
  "queryable",
401
401
  false
402
402
  ],
403
+ [
404
+ "doctor",
405
+ "rank",
406
+ false
407
+ ],
403
408
  [
404
409
  "doctor",
405
410
  "theAble",
@@ -495,11 +500,6 @@
495
500
  "theAble",
496
501
  false
497
502
  ],
498
- [
499
- "emotion",
500
- "unknown",
501
- false
502
- ],
503
503
  [
504
504
  "evaluate",
505
505
  "verb",
@@ -510,6 +510,41 @@
510
510
  "article",
511
511
  false
512
512
  ],
513
+ [
514
+ "eye",
515
+ "hierarchyAble",
516
+ false
517
+ ],
518
+ [
519
+ "eye",
520
+ "isEdee",
521
+ false
522
+ ],
523
+ [
524
+ "eye",
525
+ "isEder",
526
+ false
527
+ ],
528
+ [
529
+ "eye",
530
+ "object",
531
+ false
532
+ ],
533
+ [
534
+ "eye",
535
+ "property",
536
+ false
537
+ ],
538
+ [
539
+ "eye",
540
+ "queryable",
541
+ false
542
+ ],
543
+ [
544
+ "eye",
545
+ "theAble",
546
+ false
547
+ ],
513
548
  [
514
549
  "feel",
515
550
  "canBeDoQuestion",
@@ -790,6 +825,11 @@
790
825
  "isEder",
791
826
  false
792
827
  ],
828
+ [
829
+ "mccoy",
830
+ "name",
831
+ false
832
+ ],
793
833
  [
794
834
  "mccoy",
795
835
  "object",
@@ -865,6 +905,41 @@
865
905
  "verb",
866
906
  false
867
907
  ],
908
+ [
909
+ "name",
910
+ "hierarchyAble",
911
+ false
912
+ ],
913
+ [
914
+ "name",
915
+ "isEdee",
916
+ false
917
+ ],
918
+ [
919
+ "name",
920
+ "isEder",
921
+ false
922
+ ],
923
+ [
924
+ "name",
925
+ "object",
926
+ false
927
+ ],
928
+ [
929
+ "name",
930
+ "property",
931
+ false
932
+ ],
933
+ [
934
+ "name",
935
+ "queryable",
936
+ false
937
+ ],
938
+ [
939
+ "name",
940
+ "theAble",
941
+ false
942
+ ],
868
943
  [
869
944
  "negatable",
870
945
  "queryable",
@@ -1185,6 +1260,41 @@
1185
1260
  "punctuation",
1186
1261
  false
1187
1262
  ],
1263
+ [
1264
+ "rank",
1265
+ "hierarchyAble",
1266
+ false
1267
+ ],
1268
+ [
1269
+ "rank",
1270
+ "isEdee",
1271
+ false
1272
+ ],
1273
+ [
1274
+ "rank",
1275
+ "isEder",
1276
+ false
1277
+ ],
1278
+ [
1279
+ "rank",
1280
+ "object",
1281
+ false
1282
+ ],
1283
+ [
1284
+ "rank",
1285
+ "property",
1286
+ false
1287
+ ],
1288
+ [
1289
+ "rank",
1290
+ "queryable",
1291
+ false
1292
+ ],
1293
+ [
1294
+ "rank",
1295
+ "theAble",
1296
+ false
1297
+ ],
1188
1298
  [
1189
1299
  "readonly",
1190
1300
  "queryable",
@@ -1210,11 +1320,6 @@
1210
1320
  "queryable",
1211
1321
  false
1212
1322
  ],
1213
- [
1214
- "sentientBeing",
1215
- "unknown",
1216
- false
1217
- ],
1218
1323
  [
1219
1324
  "spock",
1220
1325
  "crew_member",
@@ -1240,6 +1345,11 @@
1240
1345
  "isEder",
1241
1346
  false
1242
1347
  ],
1348
+ [
1349
+ "spock",
1350
+ "name",
1351
+ false
1352
+ ],
1243
1353
  [
1244
1354
  "spock",
1245
1355
  "object",
@@ -1260,6 +1370,41 @@
1260
1370
  "theAble",
1261
1371
  false
1262
1372
  ],
1373
+ [
1374
+ "status",
1375
+ "hierarchyAble",
1376
+ false
1377
+ ],
1378
+ [
1379
+ "status",
1380
+ "isEdee",
1381
+ false
1382
+ ],
1383
+ [
1384
+ "status",
1385
+ "isEder",
1386
+ false
1387
+ ],
1388
+ [
1389
+ "status",
1390
+ "object",
1391
+ false
1392
+ ],
1393
+ [
1394
+ "status",
1395
+ "property",
1396
+ false
1397
+ ],
1398
+ [
1399
+ "status",
1400
+ "queryable",
1401
+ false
1402
+ ],
1403
+ [
1404
+ "status",
1405
+ "theAble",
1406
+ false
1407
+ ],
1263
1408
  [
1264
1409
  "stm_before",
1265
1410
  "adjective",
@@ -1753,6 +1898,7 @@
1753
1898
  }
1754
1899
  ],
1755
1900
  "learned_contextual_priorities": [],
1901
+ "rtf_associations": [],
1756
1902
  "query": "you are kirk",
1757
1903
  "key": {
1758
1904
  "query": "you are kirk"
@@ -1443,6 +1443,7 @@
1443
1443
  }
1444
1444
  ],
1445
1445
  "learned_contextual_priorities": [],
1446
+ "rtf_associations": [],
1446
1447
  "query": "length is a dimension",
1447
1448
  "key": {
1448
1449
  "query": "length is a dimension"
@@ -2816,10 +2817,10 @@
2816
2817
  "start": 17,
2817
2818
  "end": 20
2818
2819
  },
2820
+ "dead": true,
2819
2821
  "types": [
2820
2822
  "unknown"
2821
2823
  ],
2822
- "dead": true,
2823
2824
  "level": 0
2824
2825
  },
2825
2826
  {
@@ -2832,10 +2833,10 @@
2832
2833
  "start": 26,
2833
2834
  "end": 29
2834
2835
  },
2836
+ "dead": true,
2835
2837
  "types": [
2836
2838
  "unknown"
2837
2839
  ],
2838
- "dead": true,
2839
2840
  "level": 0
2840
2841
  }
2841
2842
  ],
@@ -3898,6 +3899,7 @@
3898
3899
  }
3899
3900
  ],
3900
3901
  "learned_contextual_priorities": [],
3902
+ "rtf_associations": [],
3901
3903
  "query": "meter centimeter foot and inch are units of length",
3902
3904
  "key": {
3903
3905
  "query": "meter centimeter foot and inch are units of length"
@@ -5613,6 +5615,7 @@
5613
5615
  }
5614
5616
  ],
5615
5617
  "learned_contextual_priorities": [],
5618
+ "rtf_associations": [],
5616
5619
  "query": "meters = centimeters / 100",
5617
5620
  "key": {
5618
5621
  "query": "meters = centimeters / 100"
@@ -7328,6 +7331,7 @@
7328
7331
  }
7329
7332
  ],
7330
7333
  "learned_contextual_priorities": [],
7334
+ "rtf_associations": [],
7331
7335
  "query": "centimeters = meters * 100",
7332
7336
  "key": {
7333
7337
  "query": "centimeters = meters * 100"
@@ -9034,6 +9038,7 @@
9034
9038
  }
9035
9039
  ],
9036
9040
  "learned_contextual_priorities": [],
9041
+ "rtf_associations": [],
9037
9042
  "query": "centimeters = millimeters / 10",
9038
9043
  "key": {
9039
9044
  "query": "centimeters = millimeters / 10"
@@ -10750,6 +10755,7 @@
10750
10755
  }
10751
10756
  ],
10752
10757
  "learned_contextual_priorities": [],
10758
+ "rtf_associations": [],
10753
10759
  "query": "millimeters = centimeters * 10",
10754
10760
  "key": {
10755
10761
  "query": "millimeters = centimeters * 10"
@@ -12466,6 +12472,7 @@
12466
12472
  }
12467
12473
  ],
12468
12474
  "learned_contextual_priorities": [],
12475
+ "rtf_associations": [],
12469
12476
  "query": "millimeters = meters * 1000",
12470
12477
  "key": {
12471
12478
  "query": "millimeters = meters * 1000"
@@ -14172,6 +14179,7 @@
14172
14179
  }
14173
14180
  ],
14174
14181
  "learned_contextual_priorities": [],
14182
+ "rtf_associations": [],
14175
14183
  "query": "meters = millimeters / 1000",
14176
14184
  "key": {
14177
14185
  "query": "meters = millimeters / 1000"
@@ -15887,6 +15895,7 @@
15887
15895
  }
15888
15896
  ],
15889
15897
  "learned_contextual_priorities": [],
15898
+ "rtf_associations": [],
15890
15899
  "query": "feet = inches / 12",
15891
15900
  "key": {
15892
15901
  "query": "feet = inches / 12"
@@ -17602,6 +17611,7 @@
17602
17611
  }
17603
17612
  ],
17604
17613
  "learned_contextual_priorities": [],
17614
+ "rtf_associations": [],
17605
17615
  "query": "inches = feet * 12",
17606
17616
  "key": {
17607
17617
  "query": "inches = feet * 12"
@@ -19317,6 +19327,7 @@
19317
19327
  }
19318
19328
  ],
19319
19329
  "learned_contextual_priorities": [],
19330
+ "rtf_associations": [],
19320
19331
  "query": "meters = feet / 3.28",
19321
19332
  "key": {
19322
19333
  "query": "meters = feet / 3.28"
@@ -20946,6 +20957,7 @@
20946
20957
  }
20947
20958
  ],
20948
20959
  "learned_contextual_priorities": [],
20960
+ "rtf_associations": [],
20949
20961
  "query": "miles = 5280 * feet",
20950
20962
  "key": {
20951
20963
  "query": "miles = 5280 * feet"
@@ -22652,6 +22664,7 @@
22652
22664
  }
22653
22665
  ],
22654
22666
  "learned_contextual_priorities": [],
22667
+ "rtf_associations": [],
22655
22668
  "query": "feet = miles / 5280",
22656
22669
  "key": {
22657
22670
  "query": "feet = miles / 5280"
@@ -24368,6 +24381,7 @@
24368
24381
  }
24369
24382
  ],
24370
24383
  "learned_contextual_priorities": [],
24384
+ "rtf_associations": [],
24371
24385
  "query": "kilometers = meters / 1000",
24372
24386
  "key": {
24373
24387
  "query": "kilometers = meters / 1000"
@@ -26074,6 +26088,7 @@
26074
26088
  }
26075
26089
  ],
26076
26090
  "learned_contextual_priorities": [],
26091
+ "rtf_associations": [],
26077
26092
  "query": "meters = kilometers * 1000",
26078
26093
  "key": {
26079
26094
  "query": "meters = kilometers * 1000"
@@ -1071,6 +1071,7 @@
1071
1071
  }
1072
1072
  ],
1073
1073
  "learned_contextual_priorities": [],
1074
+ "rtf_associations": [],
1074
1075
  "query": "mathematical modifies operator",
1075
1076
  "key": {
1076
1077
  "query": "mathematical modifies operator"
@@ -1103,6 +1103,7 @@
1103
1103
  }
1104
1104
  ],
1105
1105
  "learned_contextual_priorities": [],
1106
+ "rtf_associations": [],
1106
1107
  "query": "setidsuffix _menus",
1107
1108
  "key": {
1108
1109
  "query": "setidsuffix _menus"
@@ -2345,6 +2346,7 @@
2345
2346
  }
2346
2347
  ],
2347
2348
  "learned_contextual_priorities": [],
2349
+ "rtf_associations": [],
2348
2350
  "query": "menu is a concept",
2349
2351
  "key": {
2350
2352
  "query": "menu is a concept"
@@ -3627,6 +3629,7 @@
3627
3629
  }
3628
3630
  ],
3629
3631
  "learned_contextual_priorities": [],
3632
+ "rtf_associations": [],
3630
3633
  "query": "item is a concept",
3631
3634
  "key": {
3632
3635
  "query": "item is a concept"
@@ -4870,6 +4873,7 @@
4870
4873
  }
4871
4874
  ],
4872
4875
  "learned_contextual_priorities": [],
4876
+ "rtf_associations": [],
4873
4877
  "query": "menu modifies item",
4874
4878
  "key": {
4875
4879
  "query": "menu modifies item"
@@ -6531,6 +6535,7 @@
6531
6535
  }
6532
6536
  ],
6533
6537
  "learned_contextual_priorities": [],
6538
+ "rtf_associations": [],
6534
6539
  "query": "menus and menu items are showable",
6535
6540
  "key": {
6536
6541
  "query": "menus and menu items are showable"
@@ -7724,6 +7729,7 @@
7724
7729
  }
7725
7730
  ],
7726
7731
  "learned_contextual_priorities": [],
7732
+ "rtf_associations": [],
7727
7733
  "query": "resetidsuffix",
7728
7734
  "key": {
7729
7735
  "query": "resetidsuffix"
@@ -8990,6 +8996,7 @@
8990
8996
  }
8991
8997
  ],
8992
8998
  "learned_contextual_priorities": [],
8999
+ "rtf_associations": [],
8993
9000
  "query": "show showable",
8994
9001
  "skipSemantics": false,
8995
9002
  "key": {
package/common/menus.js CHANGED
@@ -220,6 +220,7 @@ const fixtures = async ({api, fragment, s, config, objects, kms, isModule}) => {
220
220
 
221
221
  api.addMenuItem(fileMenuId, 'fileOpen', 'open')
222
222
  api.addMenuItem(fileMenuId, 'fileOpenRemote', 'open remote')
223
+ api.addMenuItem(fileMenuId, 'fileShow', 'show')
223
224
  api.addMenuItem(fileMenuId, 'fileClose', 'close')
224
225
 
225
226
  api.addMenuItem(objectMenuId, 'objectOpen', 'open')