tpmkms 8.0.0-beta.5 → 8.0.0-beta.50

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 (99) hide show
  1. package/common/animals.instance.json +2855 -1363
  2. package/common/animals.js +17 -20
  3. package/common/articles.js +103 -0
  4. package/common/articles.test.json +310 -0
  5. package/common/avatar.js +5 -9
  6. package/common/characters.js +22 -28
  7. package/common/colors.instance.json +6978 -3493
  8. package/common/colors.js +4 -8
  9. package/common/colors.test.json +345 -780
  10. package/common/comparable.js +5 -22
  11. package/common/concept.js +120 -118
  12. package/common/countable.js +18 -12
  13. package/common/countable.test.json +1050 -0
  14. package/common/crew.instance.json +13032 -6570
  15. package/common/crew.js +36 -41
  16. package/common/crew.test.json +714 -452
  17. package/common/currency.js +27 -45
  18. package/common/dialogues.js +158 -282
  19. package/common/dimension.instance.json +273 -272
  20. package/common/dimension.js +16 -22
  21. package/common/dimension.test.json +446 -1640
  22. package/common/edible.instance.json +19911 -9877
  23. package/common/edible.js +3 -8
  24. package/common/emotions.instance.json +146 -128
  25. package/common/emotions.js +35 -38
  26. package/common/evaluate.instance.json +2 -0
  27. package/common/evaluate.js +49 -0
  28. package/common/evaluate.test.json +574 -0
  29. package/common/events.js +9 -13
  30. package/common/fastfood.instance.json +221141 -111240
  31. package/common/fastfood.js +70 -80
  32. package/common/formulas.instance.json +251 -265
  33. package/common/formulas.js +17 -24
  34. package/common/gdefaults.js +24 -26
  35. package/common/help.js +7 -12
  36. package/common/help.test.json +22 -22
  37. package/common/helpers/concept.js +9 -6
  38. package/common/helpers/dialogues.js +2 -3
  39. package/common/helpers/properties.js +52 -58
  40. package/common/helpers.js +1 -1
  41. package/common/hierarchy.js +16 -24
  42. package/common/javascript.js +11 -18
  43. package/common/kirk.instance.json +583 -289
  44. package/common/kirk.js +5 -8
  45. package/common/length.instance.json +5530 -4754
  46. package/common/length.js +4 -8
  47. package/common/listener.js +48 -0
  48. package/common/listener.test.json +104 -0
  49. package/common/math.instance.json +192 -1184
  50. package/common/math.js +15 -19
  51. package/common/meta.js +23 -47
  52. package/common/nameable.instance.json +2 -0
  53. package/common/nameable.js +135 -0
  54. package/common/nameable.test.json +2121 -0
  55. package/common/negation.instance.json +2 -0
  56. package/common/negation.js +38 -0
  57. package/common/negation.test.json +308 -0
  58. package/common/numbers.js +6 -10
  59. package/common/ordering.instance.json +340 -160
  60. package/common/ordering.js +80 -86
  61. package/common/people.instance.json +2066 -1014
  62. package/common/people.js +8 -13
  63. package/common/percentages.instance.json +2 -0
  64. package/common/percentages.js +53 -0
  65. package/common/percentages.test.json +751 -0
  66. package/common/pipboy.instance.json +7999 -6269
  67. package/common/pipboy.js +32 -43
  68. package/common/pokemon.instance.json +4207 -2069
  69. package/common/pokemon.js +7 -20
  70. package/common/pos.js +4 -5
  71. package/common/pressure.instance.json +1341 -1189
  72. package/common/pressure.js +4 -8
  73. package/common/properties.instance.json +130 -60
  74. package/common/properties.js +56 -133
  75. package/common/punctuation.js +6 -6
  76. package/common/reports.instance.json +595 -557
  77. package/common/reports.js +64 -89
  78. package/common/scorekeeper.js +18 -30
  79. package/common/sdefaults.js +16 -7
  80. package/common/sizeable.js +5 -9
  81. package/common/spock.instance.json +583 -289
  82. package/common/spock.js +5 -8
  83. package/common/stgame.js +19 -19
  84. package/common/stm.js +163 -26
  85. package/common/stm.test.json +1734 -1
  86. package/common/tell.js +14 -18
  87. package/common/temperature.instance.json +1461 -1293
  88. package/common/temperature.js +4 -8
  89. package/common/tester.js +3 -3
  90. package/common/testing.js +8 -12
  91. package/common/time.js +20 -25
  92. package/common/tokenize.js +4 -5
  93. package/common/ui.instance.json +257 -258
  94. package/common/ui.js +11 -17
  95. package/common/weight.instance.json +5212 -4233
  96. package/common/weight.js +4 -8
  97. package/common/yesno.js +5 -5
  98. package/main.js +59 -46
  99. package/package.json +27 -5
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, ensureTestFile, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, ensureTestFile, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck, propertyToArray } = require('./helpers')
3
3
  const edible = require('./edible')
4
4
  const events = require('./events')
@@ -216,7 +216,7 @@ const template = {
216
216
  {
217
217
  where: where(),
218
218
  match: ({context}) => false && context.marker == 'combo' && context.comboNumber,
219
- apply: ({context, g}) => g(context.comboNumber),
219
+ apply: async ({context, g}) => await g(context.comboNumber),
220
220
  }
221
221
  ],
222
222
  bridges: [
@@ -225,7 +225,7 @@ const template = {
225
225
  id: 'withModification',
226
226
  level: 0,
227
227
  before: ['preposition'],
228
- generatorp: ({context, gp}) => `with ${gp(context.modifications)}`,
228
+ generatorp: async ({context, gp}) => `with ${await gp(context.modifications)}`,
229
229
  bridge: "{ ...next(operator), modifications: after[0], flatten: false }",
230
230
  },
231
231
  {
@@ -287,18 +287,16 @@ const template = {
287
287
  {
288
288
  // split "sprite and fanta" into separate things so the ask will pick them up
289
289
  match: ({context}) => context.marker == 'list' && context.topLevel && !context.flatten,
290
- apply: ({context, s}) => {
291
- s({...context, flatten: true})
292
- }
290
+ apply: async ({context, s}) => await s({...context, flatten: true}),
293
291
  },
294
292
  {
295
293
  where: where(),
296
294
  match: ({context, api}) => context.marker == 'controlEnd' && api.hasAskedForButNotAvailable(),
297
- apply: ({context, api, gp, toContext, verbatim}) => {
295
+ apply: async ({context, api, gp, toContext, verbatim}) => {
298
296
  const naArray = api.getAskedForButNotAvailable()
299
297
  naArray.forEach((f) => f.paraphrase = true)
300
298
  const naContext = toContext(naArray)
301
- verbatim(`The following are not menu items: ${gp(naContext)}`)
299
+ verbatim(`The following are not menu items: ${await gp(naContext)}`)
302
300
  // allow other motivation to run
303
301
  context.cascade = true
304
302
  }
@@ -306,11 +304,13 @@ const template = {
306
304
  {
307
305
  where: where(),
308
306
  match: ({context, api}) => context.marker == 'controlEnd' && api.hasAskedForButNotAvailableModification(),
309
- apply: ({context, api, gp, toContext, verbatim}) => {
310
- const naArray = api.getAskedForButNotAvailableModification().map(({ item, modification }) => {
307
+ apply: async ({context, api, gp, toContext, verbatim}) => {
308
+ const naArray = []
309
+ for (const args of api.getAskedForButNotAvailableModification()) {
310
+ const args = { item, modification }
311
311
  // return `${gp(item)} can not be modified with ${gp(modification)}.`
312
- return `XXX can not be modified with ${gp(modification)}.`
313
- })
312
+ naArray.push(`XXX can not be modified with ${await gp(modification)}.`)
313
+ }
314
314
  verbatim(naArray.join(' '))
315
315
  // allow other motivation to run
316
316
  context.cascade = true
@@ -413,11 +413,11 @@ const template = {
413
413
  id: "change",
414
414
  isA: ['verby'],
415
415
  localHierarchy: [ ['thisitthat', 'meal'] ],
416
- generatorp: ({context, gp}) => `change ${gp(context.from)} to ${gp(context.to)}`,
416
+ generatorp: async ({context, gp}) => `change ${await gp(context.from)} to ${await gp(context.to)}`,
417
417
  bridge: "{ ...next(operator), from: after[0], to: after[1].toObject }",
418
- semantic: ({context, api, e}) => {
418
+ semantic: async ({context, api, e}) => {
419
419
  const state = api.state
420
- const eFrom = e(context.from).evalue
420
+ const eFrom = (await e(context.from)).evalue
421
421
  const from = state.getIdCombo(eFrom.fromSTM ? eFrom : context.from)
422
422
  const to = state.getIdCombo(context.to)
423
423
  for (const item of api.items()) {
@@ -887,8 +887,8 @@ class State {
887
887
  {
888
888
  where: where(),
889
889
  match: ({context, isA}) => isA(context.marker, 'number') && !context.evaluate,
890
- apply: ({context, e}) => {
891
- food.comboNumber = { value: e(context).value }
890
+ apply: async ({context, e}) => {
891
+ food.comboNumber = { value: (await e(context)).value }
892
892
  this.add(Object.assign(food, context))
893
893
  }
894
894
  },
@@ -917,7 +917,7 @@ class State {
917
917
  }
918
918
 
919
919
  this.api.add(item)
920
- this.api.args.mentioned(food)
920
+ this.api.args.mentioned({ context: food })
921
921
 
922
922
  for (const addIt of addsInsteadOfModifications) {
923
923
  this.add(addIt)
@@ -935,75 +935,65 @@ class State {
935
935
  }
936
936
  }
937
937
 
938
- const createConfig = (additionalConfig) => {
939
- const config = new Config({
940
- name: 'fastfood',
941
- operators: [
942
- "([orderNoun|order])",
943
- "([showOrder|show] ([orderNoun/1]))",
944
- ],
945
- // flatten: ['list'],
946
- // TODO use node naming not python
947
- semantics: [
948
- {
949
- where: where(),
950
- priority: -10,
951
- match: ({context}) => context.marker == 'compound_operator',
952
- apply: ({context, s}) => {
953
- context.marker = 'list'
954
- context.flatten = true
955
- s(context)
956
- }
957
- },
958
- {
959
- where: where(),
960
- match: ({context, isAListable}) => isAListable(context, 'edible') && context.marker !== 'edible' && !context.same && !context.isResponse && !context.evaluate,
961
- apply: ({context, km, api, instance}) => {
962
- for (const element of propertyToArray(context)) {
963
- km('fastfood').api.state.add(element)
964
- }
965
- }
966
- },
967
- ],
968
- floaters: ['quantity'],
969
- bridges: [
970
- {
971
- id: 'orderNoun',
972
- parents: ['noun', 'queryable'],
973
- evaluator: ({context, api}) => {
974
- context.evalue = { marker: 'list', value: api.objects.items }
975
- api.show()
938
+ const config = {
939
+ name: 'fastfood',
940
+ operators: [
941
+ "([orderNoun|order])",
942
+ "([showOrder|show] ([orderNoun/1]))",
943
+ ],
944
+ // flatten: ['list'],
945
+ // TODO use node naming not python
946
+ semantics: [
947
+ {
948
+ where: where(),
949
+ priority: -10,
950
+ match: ({context}) => context.marker == 'compound_operator',
951
+ apply: async ({context, s}) => {
952
+ context.marker = 'list'
953
+ context.flatten = true
954
+ await s(context)
955
+ }
956
+ },
957
+ {
958
+ where: where(),
959
+ match: ({context, isAListable}) => isAListable(context, 'edible') && context.marker !== 'edible' && !context.same && !context.isResponse && !context.evaluate,
960
+ apply: ({context, km, api, instance}) => {
961
+ for (const element of propertyToArray(context)) {
962
+ km('fastfood').api.state.add(element)
976
963
  }
964
+ }
965
+ },
966
+ ],
967
+ floaters: ['quantity'],
968
+ bridges: [
969
+ {
970
+ id: 'orderNoun',
971
+ parents: ['noun', 'queryable'],
972
+ evaluator: ({context, api}) => {
973
+ context.evalue = { marker: 'list', value: api.objects.items }
974
+ api.show()
975
+ }
976
+ },
977
+ {
978
+ id: 'showOrder',
979
+ parents: ['verby'],
980
+ bridge: "{ ...next(operator), order: after[0] }",
981
+ generatorp: async ({context, g}) => `show ${await g(context.order)}`,
982
+ semantic: ({api}) => {
983
+ api.state.show()
977
984
  },
978
- {
979
- id: 'showOrder',
980
- parents: ['verby'],
981
- bridge: "{ ...next(operator), order: after[0] }",
982
- generatorp: ({context, g}) => `show ${g(context.order)}`,
983
- semantic: ({api}) => {
984
- api.state.show()
985
- },
986
- },
987
- ],
988
- }, module)
989
- config.stop_auto_rebuild()
990
- config.add(edible(), countable(), events(), sizeable())
991
- config.api = api
992
- config.initializer( ({api}) => {
993
- api.state = new State(api)
994
- })
995
- if (additionalConfig) {
996
- additionalConfig(config)
997
- }
998
- config.restart_auto_rebuild()
999
- return config
985
+ },
986
+ ],
1000
987
  }
1001
988
 
1002
989
  knowledgeModule( {
990
+ config,
991
+ includes: [edible, countable, events, sizeable],
992
+ api: () => new API(),
993
+ initializer: ({api}) => { api.state = new State(api) },
994
+
1003
995
  module,
1004
996
  description: 'fastfood related concepts',
1005
- createConfig,
1006
- acceptsAdditionalConfig: true,
1007
997
  test: {
1008
998
  name: './fastfood.test.json',
1009
999
  contents: fastfood_tests,