tpmkms_4wp 8.0.0-beta.6 → 8.0.0-beta.61

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) 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 +7175 -3634
  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 +13067 -6598
  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 +20057 -10041
  25. package/common/edible.js +3 -8
  26. package/common/emotions.instance.json +147 -129
  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 +221825 -111641
  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 +22 -22
  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 +135 -0
  57. package/common/nameable.test.json +2121 -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 +2134 -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 +11767 -6295
  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 +12 -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 +6 -6
  79. package/common/reports.instance.json +1018 -530
  80. package/common/reports.js +73 -97
  81. package/common/scorekeeper.js +18 -30
  82. package/common/sdefaults.js +16 -7
  83. package/common/sizeable.js +6 -10
  84. package/common/spock.instance.json +584 -290
  85. package/common/spock.js +5 -8
  86. package/common/stgame.js +19 -19
  87. package/common/stm.js +164 -27
  88. package/common/stm.test.json +1734 -1
  89. package/common/tell.js +14 -18
  90. package/common/temperature.instance.json +2271 -1222
  91. package/common/temperature.js +4 -8
  92. package/common/tester.js +3 -3
  93. package/common/testing.js +8 -12
  94. package/common/time.js +20 -25
  95. package/common/tokenize.js +4 -5
  96. package/common/ui.instance.json +459 -240
  97. package/common/ui.js +16 -22
  98. package/common/weight.instance.json +7646 -4026
  99. package/common/weight.js +4 -8
  100. package/common/yesno.js +5 -5
  101. package/main.js +59 -46
  102. package/package.json +28 -5
@@ -45,6 +45,10 @@ class API {
45
45
  }
46
46
 
47
47
  if (km('concept')) {
48
+ if (!km('concept').api) {
49
+ debugger
50
+ debugger
51
+ }
48
52
  km('concept').api.addDefaultTypesForObjectHierarchy([
49
53
  'theAble',
50
54
  'queryable',
@@ -136,7 +140,7 @@ class API {
136
140
  notes: 'semantic for setting value with constraint',
137
141
  match: ({context, isA}) => isA(context.marker, after[0].tag) && context.evaluate && context.constraints,
138
142
  // match: ({context, isA}) => context.marker == after[0].tag && context.evaluate,
139
- apply: ({km, context, e, log, isA, s}) => {
143
+ apply: async ({km, context, e, log, isA}) => {
140
144
  const constraint = context.constraints[0];
141
145
  const value = constraint.constraint;
142
146
  let property = constraint.property;
@@ -151,7 +155,7 @@ class API {
151
155
  // value.greg = true
152
156
  // value.ownee.query = true
153
157
  value.query = true
154
- let instance = e(value)
158
+ let instance = await e(value)
155
159
  if (instance.verbatim) {
156
160
  context.evalue = { verbatim: instance.verbatim }
157
161
  return
@@ -168,13 +172,13 @@ class API {
168
172
  config.addGenerator({
169
173
  notes: 'generator for constraint',
170
174
  match: ({context}) => context.marker == edAble.operator && context.paraphrase && context.constrained,
171
- apply: ({context, g}) => {
175
+ apply: async ({context, g}) => {
172
176
  if (context[before[0].tag].marker == 'by') {
173
177
  // the cat wendy owned
174
- return `${g({...context[after[0].tag], paraphrase: true})} ${edAble.word} ${g({...context[before[0].tag], paraphrase: true})}`
178
+ return `${await g({...context[after[0].tag], paraphrase: true})} ${edAble.word} ${await g({...context[before[0].tag], paraphrase: true})}`
175
179
  } else {
176
180
  // the cat owned by wendy
177
- return `${g({...context[after[0].tag], paraphrase: true})} ${edAble.word} ${['by', g({...context[before[0].tag], paraphrase: true})].filter((t) => t).join(' ')}`
181
+ return `${await g({...context[after[0].tag], paraphrase: true})} ${edAble.word} ${['by', await g({...context[before[0].tag], paraphrase: true})].filter((t) => t).join(' ')}`
178
182
  }
179
183
  },
180
184
  })
@@ -194,19 +198,19 @@ class API {
194
198
 
195
199
  return false;
196
200
  },
197
- apply: ({context, g}) => {
201
+ apply: async ({context, g}) => {
198
202
  const chosen = chooseNumber(context, word.singular, word.plural)
199
- return `${g(context[before[0].tag])} ${chosen} ${g(context[after[0].tag])}`
203
+ return `${await g(context[before[0].tag])} ${chosen} ${await g(context[after[0].tag])}`
200
204
  }
201
205
  })
202
206
  config.addGenerator({
203
207
  match: ({context}) => context.marker == edAble.operator && context.isEd,
204
- apply: ({context, g}) => {
208
+ apply: async ({context, g}) => {
205
209
  const chosen = chooseNumber(context[after[0].tag], 'is', 'are')
206
210
  if (context[before[0].tag].evalue && context[before[0].tag].evalue.marker == 'answerNotKnown') {
207
- return g(context[before[0].tag])
211
+ return await g(context[before[0].tag])
208
212
  }
209
- return `${g(context[after[0].tag])} ${chosen} ${edAble.word} by ${g(context[before[0].tag])}`
213
+ return `${await g(context[after[0].tag])} ${chosen} ${edAble.word} by ${await g(context[before[0].tag])}`
210
214
  }
211
215
  })
212
216
  /*
@@ -250,12 +254,10 @@ class API {
250
254
  notes: `generator for who/what is X owned by`,
251
255
  // match: ({context, hierarchy}) => hierarchy.isA(context.marker, 'is') && context.one && context.one.marker == 'ownee' && context.one.constraints && context.one.constraints[0] && context.one.constraints[0].constraint.marker == 'owned' && context.one.constraints[0].constraint.owner.implicit,
252
256
  match: ({context, hierarchy}) => hierarchy.isA(context.marker, 'is') && context.one && context.one.marker == after[0].tag && context.one.constraints && context.one.constraints[0] && context.one.constraints[0].constraint.marker == edAble.operator && context.one.constraints[0].constraint[before[0].tag].implicit,
253
- apply: ({context, g, gs, callId}) => {
257
+ apply: async ({context, fragments, g, gs, callId}) => {
254
258
  const isToFromM = [{"from":["one"],"to":["two"]},{"from":["two"],"to":["one"]}]
255
- const fromF = config.fragment(whoIsWhatVerbedBy).contexts()[0]
256
- // const fromF = config.fragment[before[0].tag]"ownerVar is owneeVar owned by").contexts()[0]
257
- // const toF = config.fragment("owneeVar is owned by ownerVar")
258
- const toF = config.fragment(thisIsVerbedByThat)
259
+ const fromF = fragments(whoIsWhatVerbedBy).contexts()[0]
260
+ const toF = fragments(thisIsVerbedByThat)
259
261
  const to = toF.contexts()[0]
260
262
  const tm = translationMapping(fromF, to)
261
263
  /*
@@ -269,11 +271,11 @@ class API {
269
271
  // const from = context.one.constraints[0].constraint
270
272
  const from = context
271
273
  const im = translationMappingToInstantiatorMappings(tmPrime, from, to)
272
- const translation = toF.instantiate(im)
274
+ const translation = await toF.instantiate(im)
273
275
  if (Array.isArray(translation)) {
274
- return gs(translation)
276
+ return await gs(translation)
275
277
  } else {
276
- return g(translation)
278
+ return await g(translation)
277
279
  }
278
280
  }
279
281
  }
@@ -383,11 +385,16 @@ class API {
383
385
  config.addGenerator({
384
386
  notes: 'ordering generator for paraphrase',
385
387
  match: ({context}) => context.marker == operator && context.paraphrase && !context.query,
386
- apply: ({context, gp, g}) => {
387
- const beforeGenerator = before.map( (arg) => g(context[arg.tag]) )
388
- const afterGenerator = after.map( (arg) => gp(context[arg.tag]) )
388
+ apply: async ({context, gp, g}) => {
389
+ const beforeGenerator = []
390
+ for (const arg of before) {
391
+ beforeGenerator.push(await g(context[arg.tag]))
392
+ }
393
+ const afterGenerator = []
394
+ for (const arg of after) {
395
+ afterGenerator.push(await gp(context[arg.tag]))
396
+ }
389
397
  const word = context.word
390
- // return beforeGenerator.concat([`${context.word}`]).concat(afterGenerator).join(' ')
391
398
  const sub = []
392
399
  if (context.subphrase) {
393
400
  sub.push(['that'])
@@ -399,7 +406,7 @@ class API {
399
406
  config.addGenerator({
400
407
  notes: 'ordering generator for response',
401
408
  match: ({context}) => context.marker == operator && context.evalue && context.isResponse,
402
- apply: ({context, g, km}) => {
409
+ apply: async ({context, g, km}) => {
403
410
  const brief = km("dialogues").api.getBrief()
404
411
 
405
412
  const { evalue } = context
@@ -414,7 +421,7 @@ class API {
414
421
  if (evalue.truthValueOnly || brief) {
415
422
  return `${yesno}`
416
423
  } else {
417
- return `${yesno} ${g(Object.assign({}, evalue, { paraphrase: true }))}`
424
+ return `${yesno} ${await g(Object.assign({}, evalue, { paraphrase: true }))}`
418
425
  }
419
426
  }
420
427
  })
@@ -628,8 +635,8 @@ class API {
628
635
  setValue: ([object, property], value, has) => {
629
636
  return this.setProperty(object, property, value, has, true)
630
637
  },
631
- getValue: ([object, property]) => {
632
- return this.getPropertyDirectly(object, property)
638
+ getValue: async ([object, property]) => {
639
+ return await this.getPropertyDirectly(object, property)
633
640
  },
634
641
  })
635
642
  }
@@ -645,16 +652,18 @@ class API {
645
652
  error.code = 'ReadOnly'
646
653
  throw error
647
654
  },
648
- getValue: ([object, property]) => {
649
- return this.getPropertyDirectly(object, property)
655
+ getValue: async ([object, property]) => {
656
+ return await this.getPropertyDirectly(object, property)
650
657
  },
651
658
  })
652
659
  this.propertiesFH.setHandler(path, handler)
653
660
  }
654
661
 
655
- getObject(object) {
662
+ /*
663
+ async getObject(object) {
656
664
  return this.propertiesFH.getValue([object])
657
665
  }
666
+ */
658
667
 
659
668
  getHandler(object, property) {
660
669
  return this.propertiesFH.getHandler([object, property])
@@ -671,34 +680,33 @@ class API {
671
680
  // return context.value
672
681
  }
673
682
 
674
- getProperty(object, property, g) {
683
+ async getProperty(object, property, g) {
675
684
  object = this.toValue(object)
676
685
  property = this.toValue(property)
677
686
  const handler = this.propertiesFH.getHandler([object, property])
678
687
  if (handler) {
679
- return handler.getValue([object, property])
688
+ return await handler.getValue([object, property])
680
689
  }
681
- return this.getPropertyDirectly(object, property, g)
690
+ return await this.getPropertyDirectly(object, property, g)
682
691
  }
683
692
 
684
- getPropertyDirectly(object, property, g) {
693
+ async getPropertyDirectly(object, property, g) {
685
694
  if (property == 'property') {
686
- const objectProps = this.propertiesFH.getValue([object])
695
+ const objectProps = await this.propertiesFH.getValue([object])
687
696
  const values = []
688
697
  for (let key of Object.keys(objectProps)) {
689
698
  if (objectProps[key].has) {
690
- // values.push(`${g(key)}: ${g({ ...objectProps[key].value, evaluate: true })}`)
691
- values.push(`${g(key)}: ${g({ ...objectProps[key].value, paraphrase: true })}`)
699
+ values.push(`${await g(key)}: ${await g({ ...objectProps[key].value, paraphrase: true })}`)
692
700
  }
693
701
  }
694
702
  return { marker: 'list', value: values }
695
703
  } else {
696
- return this.propertiesFH.getValue([object, property]).value
704
+ return (await this.propertiesFH.getValue([object, property])).value
697
705
  }
698
706
  }
699
707
 
700
- hasProperty(object, property, has) {
701
- return this.propertiesFH.getValue([object, property]).has
708
+ async hasProperty(object, property, has) {
709
+ return (await this.propertiesFH.getValue([object, property])).has
702
710
  }
703
711
 
704
712
  setProperty(object, property, value, has, skipHandler) {
@@ -726,7 +734,7 @@ class API {
726
734
  }
727
735
  }
728
736
 
729
- knownObject(object) {
737
+ async knownObject(object) {
730
738
  if (object == 'property') {
731
739
  return object
732
740
  }
@@ -735,10 +743,10 @@ class API {
735
743
  }
736
744
  const path = [object]
737
745
  // return this.knownPropertyNew(path)
738
- return this.propertiesFH.knownProperty(path)
746
+ return await this.propertiesFH.knownProperty(path)
739
747
  }
740
748
 
741
- hasProperty(object, property) {
749
+ async hasProperty(object, property) {
742
750
  if (property == 'property') {
743
751
  return true;
744
752
  }
@@ -748,7 +756,7 @@ class API {
748
756
  const seen = [object];
749
757
  while (todo.length > 0) {
750
758
  const next = todo.pop();
751
- if ((this.propertiesFH.getValue([next, property], false) || {}).has) {
759
+ if ((await this.propertiesFH.getValue([next, property], false) || {}).has) {
752
760
  return true
753
761
  }
754
762
  const parents = this._objects.parents[next] || [];
@@ -763,11 +771,11 @@ class API {
763
771
  }
764
772
 
765
773
  // NOT DONE
766
- knownProperty(object, property) {
774
+ async knownProperty(object, property) {
767
775
  object = this.toValue(object)
768
776
  property = this.toValue(property)
769
777
  if (property == 'property') {
770
- const objectProps = this.propertiesFH.getValue([object])
778
+ const objectProps = await this.propertiesFH.getValue([object])
771
779
  return !_.isEmpty(objectProps)
772
780
  }
773
781
 
@@ -776,7 +784,7 @@ class API {
776
784
  const seen = [object];
777
785
  while (todo.length > 0) {
778
786
  const next = todo.pop();
779
- if ((this.propertiesFH.getValue([next, property], false) || {}).has) {
787
+ if ((await this.propertiesFH.getValue([next, property], false) || {}).has) {
780
788
  return true
781
789
  }
782
790
  const parents = this._objects.parents[next] || [];
@@ -911,22 +919,6 @@ class API {
911
919
 
912
920
  set config(config) {
913
921
  this._config = config
914
- /*
915
- const toJSON = (h) => {
916
- if (h.child && h.parent) {
917
- return h
918
- } else {
919
- return { child: h[0], parent: h[1] }
920
- }
921
- }
922
- for (const tuple of [...config().config.hierarchy]) {
923
- const h = toJSON(tuple);
924
- // TODO should this notice development flag?
925
- if (this.isOperator(h.child) && this.isOperator(h.parent)) {
926
- this.rememberIsA(h.child, h.parent)
927
- }
928
- }
929
- */
930
922
  }
931
923
 
932
924
  get config() {
package/common/helpers.js CHANGED
@@ -131,12 +131,12 @@ const toEValue = (context) => {
131
131
  return context;
132
132
  }
133
133
 
134
- const defaultContextProperties = ['marker', 'text', 'verbatim', 'isResponse']
134
+ const defaultContextCheckProperties = ['marker', 'text', 'verbatim', 'isResponse', { property: 'response', filter: ['marker', 'text', 'verbatim'] }]
135
135
  const defaultContextCheck = [
136
- ...defaultContextProperties,
136
+ ...defaultContextCheckProperties,
137
137
  (object) => {
138
138
  if (typeof object.value == 'object') {
139
- return { property: 'value', filter: defaultContextProperties }
139
+ return { property: 'value', filter: defaultContextCheckProperties }
140
140
  } else {
141
141
  return 'value'
142
142
  }
@@ -146,16 +146,17 @@ const defaultContextCheck = [
146
146
  return
147
147
  }
148
148
  if (typeof object.modifiers[0] == 'object') {
149
- return { property: 'modifiers', filter: defaultContextProperties }
149
+ return { property: 'modifiers', filter: defaultContextCheckProperties }
150
150
  } else {
151
151
  return 'modifiers'
152
152
  }
153
153
  },
154
- { property: 'modifiers', isPropertyList: true, filter: defaultContextProperties }
154
+ { property: 'modifiers', isPropertyList: true, filter: defaultContextCheckProperties }
155
155
  ]
156
156
 
157
157
  module.exports = {
158
158
  defaultContextCheck,
159
+ defaultContextCheckProperties,
159
160
  toEValue,
160
161
  millisecondsUntilHourOfDay,
161
162
  indent,
@@ -1,4 +1,4 @@
1
- const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const properties = require('./properties')
4
4
  const hierarchy_tests = require('./hierarchy.test.json')
@@ -32,7 +32,7 @@ const getTypes = ( km, concept, instance ) => {
32
32
 
33
33
  // TODO the types of rank are x y z ....
34
34
  // TODO x is a kind of y
35
- let configStruct = {
35
+ let config = {
36
36
  name: 'hierarchy',
37
37
  operators: [
38
38
  // "([hierarchyAble|])",
@@ -61,7 +61,7 @@ let configStruct = {
61
61
  notes: 'what type is pikachu',
62
62
  where: where(),
63
63
  match: ({context, hierarchy}) => hierarchy.isA(context.marker, 'is') && context.query && !['what'].includes(context.one.marker) && !['what'].includes(context.two.marker) && (context.one.query || context.two.query),
64
- apply: ({context, hierarchy, km, log, e, s}) => {
64
+ apply: async ({context, hierarchy, km, log, e}) => {
65
65
  const one = context.one;
66
66
  const two = context.two;
67
67
  let concept, value;
@@ -72,7 +72,7 @@ let configStruct = {
72
72
  concept = two;
73
73
  value = one;
74
74
  }
75
- let instance = e(value)
75
+ let instance = await e(value)
76
76
  if (instance.verbatim) {
77
77
  context.evalue = { verbatim: instance.verbatim }
78
78
  context.isResponse = true
@@ -80,9 +80,6 @@ let configStruct = {
80
80
  }
81
81
  instance = getTypes(km, concept, instance)
82
82
 
83
- // instance.focusable = ['one', 'two']
84
- // concept = JSON.parse(JSON.stringify(value))
85
- // greg
86
83
  concept = _.cloneDeep(value)
87
84
  concept.isQuery = undefined
88
85
 
@@ -106,10 +103,10 @@ let configStruct = {
106
103
  notes: 'type of pikachu', // the types of type is the next one
107
104
  where: where(),
108
105
  match: ({context}) => context.marker == 'type' && context.evaluate && context.object && context.objects[context.objects.length-1].number == 'one' && pluralize.isSingular(context.objects[0].word),
109
- apply: ({context, objects, e, gs, km, log, s}) => {
106
+ apply: async ({context, objects, e, gs, km, log}) => {
110
107
  const concept = context.objects[0];
111
108
  const value = context.objects[1];
112
- let instance = e(value)
109
+ let instance = await e(value)
113
110
  if (instance.verbatim) {
114
111
  context.evalue = { verbatim: instance.verbatim }
115
112
  return
@@ -135,14 +132,14 @@ let configStruct = {
135
132
  }
136
133
  return hierarchy.isA(context.marker, 'is') && context.query && args( { types: ['hierarchyAble', 'hierarchyAble'], properties: ['one', 'two'] } )
137
134
  },
138
- apply: ({context, km, objects, g}) => {
135
+ apply: async ({context, km, objects, g}) => {
139
136
  const api = km('properties').api
140
137
  const one = context.one
141
138
  const two = context.two
142
139
  const oneId = pluralize.singular(one.value);
143
140
  if (!api.conceptExists(oneId)) {
144
141
  context.evalue = {
145
- verbatim: `I don't know about ${g({ ...one, paraphrase: true})}`
142
+ verbatim: `I don't know about ${await g({ ...one, paraphrase: true})}`
146
143
  }
147
144
  context.isResponse = true
148
145
  return
@@ -150,7 +147,7 @@ let configStruct = {
150
147
  const twoId = pluralize.singular(two.value);
151
148
  if (!api.conceptExists(twoId)) {
152
149
  context.evalue = {
153
- verbatim: `I don't know about ${g({ ...two, paraphrase: true})}`
150
+ verbatim: `I don't know about ${await g({ ...two, paraphrase: true})}`
154
151
  }
155
152
  context.isResponse = true
156
153
  return
@@ -201,7 +198,6 @@ let configStruct = {
201
198
  },
202
199
  {
203
200
  notes: 'humans are mammels',
204
- // match: ({context, listable}) => listable(context, 'unknown') && context.same,
205
201
  where: where(),
206
202
  match: ({context, listable, hierarchy, isA, callId}) => {
207
203
  if (!context.same) {
@@ -270,7 +266,7 @@ let configStruct = {
270
266
  notes: 'types of type', // what are the types of animals
271
267
  where: where(),
272
268
  match: ({context}) => context.marker == 'type' && context.evaluate && context.object,
273
- apply: ({context, objects, gs, km, isA}) => {
269
+ apply: ({context, objects, km, isA}) => {
274
270
  const api = km('properties').api
275
271
  const conceptApi = km('concept').api
276
272
  const type = pluralize.singular(context.object.value);
@@ -288,23 +284,19 @@ let configStruct = {
288
284
  ]
289
285
  };
290
286
 
291
- const createConfig = () => {
292
- const config = new Config(configStruct, module)
293
- config.stop_auto_rebuild()
294
- config.add(properties())
295
- config.initializer( ({apis, hierarchy}) => {
287
+ const initializer = ({apis, hierarchy}) => {
296
288
  apis('stm').addIsA( (child, parent) => {
297
289
  return hierarchy.isA(child, parent)
298
290
  })
299
- })
300
- config.restart_auto_rebuild()
301
- return config
302
- }
291
+ }
303
292
 
304
293
  knowledgeModule( {
294
+ config,
295
+ includes: [properties],
296
+ initializer,
297
+
305
298
  module,
306
299
  description: 'hierarchy of objects',
307
- createConfig,
308
300
  test: {
309
301
  name: './hierarchy.test.json',
310
302
  contents: hierarchy_tests,
@@ -1,9 +1,9 @@
1
- const { Config, knowledgeModule, where } = require('./runtime').theprogrammablemind
1
+ const { knowledgeModule, where } = require('./runtime').theprogrammablemind
2
2
  const { defaultContextCheck } = require('./helpers')
3
3
  const dialogues = require('./dialogues')
4
4
  const javascript_tests = require('./javascript.test.json')
5
5
 
6
- let configStruct = {
6
+ let config = {
7
7
  name: 'javascript',
8
8
  operators: [
9
9
  "((<let> ([variable|])) [assignment|] (value))",
@@ -36,14 +36,14 @@ let configStruct = {
36
36
  {
37
37
  where: where(),
38
38
  match: ({context}) => context.marker == 'assignment' && context.paraphrase,
39
- apply: ({context, g}) => `let ${g(context.variable)} = ${g(context.value)}`
39
+ apply: async ({context, g}) => `let ${await g(context.variable)} = ${await g(context.value)}`
40
40
  },
41
41
  {
42
42
  where: where(),
43
43
  match: ({context}) => context.marker == 'assignment' && context.isResponse,
44
- apply: ({context, g}) => {
45
- const value = g(context.variable)
46
- return `${g(context.variable)} == ${g(context.value)}`
44
+ apply: async ({context, g}) => {
45
+ // const value = await g(context.variable)
46
+ return `${await g(context.variable)} == ${await g(context.value)}`
47
47
  }
48
48
  },
49
49
  ],
@@ -60,22 +60,15 @@ let configStruct = {
60
60
  ],
61
61
  };
62
62
 
63
- const createConfig = () => {
64
- const config = new Config(configStruct, module)
65
- config.stop_auto_rebuild()
66
- config.add(dialogues())
67
-
68
- config.initializer( ({objects, uuid}) => {
63
+ knowledgeModule( {
64
+ config,
65
+ includes: [dialogues],
66
+ initializer: ({objects, uuid}) => {
69
67
  objects.variables = {}
70
- })
71
- config.restart_auto_rebuild()
72
- return config
73
- }
68
+ },
74
69
 
75
- knowledgeModule( {
76
70
  module,
77
71
  description: 'javascript interpreter',
78
- createConfig,
79
72
  test: {
80
73
  name: './javascript.test.json',
81
74
  contents: javascript_tests,