ekms 8.0.0-beta.7 → 8.0.0-beta.71

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. package/common/animals.instance.json +2871 -1379
  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 +7170 -3657
  8. package/common/colors.js +4 -8
  9. package/common/colors.test.json +345 -780
  10. package/common/comparable.instance.json +1750 -0
  11. package/common/comparable.js +36 -28
  12. package/common/comparable.test.json +438 -2
  13. package/common/concept.js +120 -118
  14. package/common/countable.js +19 -13
  15. package/common/countable.test.json +1050 -0
  16. package/common/crew.instance.json +13066 -6469
  17. package/common/crew.js +36 -41
  18. package/common/crew.test.json +714 -452
  19. package/common/currency.js +27 -45
  20. package/common/dialogues.js +161 -285
  21. package/common/dimension.instance.json +474 -253
  22. package/common/dimension.js +16 -22
  23. package/common/dimension.test.json +446 -1640
  24. package/common/edible.instance.json +20053 -10093
  25. package/common/edible.js +3 -8
  26. package/common/emotions.instance.json +147 -69
  27. package/common/emotions.js +35 -38
  28. package/common/evaluate.instance.json +2 -0
  29. package/common/evaluate.js +49 -0
  30. package/common/evaluate.test.json +574 -0
  31. package/common/events.js +10 -14
  32. package/common/fastfood.instance.json +221166 -111223
  33. package/common/fastfood.js +75 -85
  34. package/common/fastfood.test.json +268 -90
  35. package/common/formulas.instance.json +455 -249
  36. package/common/formulas.js +19 -26
  37. package/common/gdefaults.js +24 -26
  38. package/common/help.js +7 -12
  39. package/common/help.test.json +63 -8
  40. package/common/helpers/concept.js +10 -7
  41. package/common/helpers/dialogues.js +2 -3
  42. package/common/helpers/properties.js +54 -62
  43. package/common/helpers.js +6 -5
  44. package/common/hierarchy.js +16 -24
  45. package/common/javascript.js +11 -18
  46. package/common/kirk.instance.json +584 -290
  47. package/common/kirk.js +5 -8
  48. package/common/length.instance.json +8834 -4757
  49. package/common/length.js +4 -8
  50. package/common/listener.js +48 -0
  51. package/common/listener.test.json +104 -0
  52. package/common/math.instance.json +425 -1187
  53. package/common/math.js +16 -20
  54. package/common/meta.js +23 -47
  55. package/common/nameable.instance.json +2 -0
  56. package/common/nameable.js +144 -0
  57. package/common/nameable.test.json +3191 -0
  58. package/common/negation.instance.json +2 -0
  59. package/common/negation.js +38 -0
  60. package/common/negation.test.json +308 -0
  61. package/common/numbers.js +27 -31
  62. package/common/ordering.instance.json +366 -246
  63. package/common/ordering.js +80 -86
  64. package/common/people.instance.json +2074 -1022
  65. package/common/people.js +8 -13
  66. package/common/percentages.instance.json +2 -0
  67. package/common/percentages.js +53 -0
  68. package/common/percentages.test.json +751 -0
  69. package/common/pipboy.instance.json +11745 -6329
  70. package/common/pipboy.js +48 -59
  71. package/common/pokemon.instance.json +4226 -2081
  72. package/common/pokemon.js +7 -20
  73. package/common/pos.js +15 -13
  74. package/common/pressure.instance.json +2208 -1175
  75. package/common/pressure.js +4 -8
  76. package/common/properties.instance.json +131 -61
  77. package/common/properties.js +57 -134
  78. package/common/punctuation.js +15 -7
  79. package/common/reports.instance.json +1018 -530
  80. package/common/reports.js +77 -100
  81. package/common/reports.test.json +15623 -10458
  82. package/common/scorekeeper.js +18 -30
  83. package/common/sdefaults.js +16 -7
  84. package/common/sizeable.js +6 -10
  85. package/common/spock.instance.json +584 -290
  86. package/common/spock.js +5 -8
  87. package/common/stgame.js +19 -19
  88. package/common/stm.js +164 -27
  89. package/common/stm.test.json +1734 -1
  90. package/common/tell.js +14 -18
  91. package/common/temperature.instance.json +2271 -1222
  92. package/common/temperature.js +4 -8
  93. package/common/tester.js +15 -4
  94. package/common/testing.js +8 -12
  95. package/common/time.js +20 -25
  96. package/common/tokenize.js +5 -6
  97. package/common/ui.instance.json +459 -240
  98. package/common/ui.js +16 -22
  99. package/common/weight.instance.json +7646 -4026
  100. package/common/weight.js +4 -8
  101. package/common/yesno.js +5 -5
  102. package/main.js +14 -2
  103. package/package.json +28 -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')
@@ -137,7 +137,7 @@ const template = {
137
137
  "((meal/* && context.comboNumber == undefined) [comboMeal] (combo/*))",
138
138
  "((combo/*) [comboNumber] (number/* || numberNumberCombo/*))",
139
139
  "((numberNumberCombo/1) [numberNumberCombo_combo|] (combo/0))",
140
- "((number/0,1 && context.instance == undefined) [numberNumberCombo] (number/0,1))",
140
+ "((number/0,1 && context.instance == false) [numberNumberCombo] (number/0,1 && instance == true))",
141
141
  "((combo/*) [([withModification|with] ([modification]))])",
142
142
  ],
143
143
  floaters: ['instance'],
@@ -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
@@ -411,13 +411,13 @@ const template = {
411
411
  bridges: [
412
412
  {
413
413
  id: "change",
414
- isA: ['verby'],
415
- localHierarchy: [ ['thisitthat', 'meal'] ],
416
- generatorp: ({context, gp}) => `change ${gp(context.from)} to ${gp(context.to)}`,
414
+ isA: ['verb'],
415
+ localHierarchy: [ ['thisitthat', 'meal'], ['thisitthat', 'drink'] ],
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()) {
@@ -451,7 +451,7 @@ const template = {
451
451
  bridges: [
452
452
  {
453
453
  id: 'remove',
454
- isA: ['verby'],
454
+ isA: ['verb'],
455
455
  bridge: "{ ...next(operator), remove: after[0], postModifiers: ['remove'] }",
456
456
  semantic: ({context, api}) => {
457
457
  const state = api.state
@@ -464,7 +464,7 @@ const template = {
464
464
  },
465
465
  {
466
466
  id: 'reset',
467
- isA: ['verby'],
467
+ isA: ['verb'],
468
468
  bridge: "{ ...next(operator) }",
469
469
  semantic: ({context, api}) => {
470
470
  api.reset()
@@ -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: ['verb'],
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,